Les erreurs de Mongoose.js dans le rappel de sauvegarde?
Question
Voici un exemple isolé du problème:
var assert = require('assert')
var mongoose = require('mongoose')
var Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;
mongoose.connect("mongodb://localhost/some_db");
var BlogPostSchema = new Schema({
title : String
, body : String
, date : Date
});
var BlogPost = mongoose.model('BlogPost', BlogPostSchema);
var bp = new BlogPost({title: 'blogpost 0'})
bp.save(function(err) {
console.log("this will print 0")
assert.equal(1, 1)
console.log("0 ... no problem")
})
var bp1 = new BlogPost({title: 'blogpost 1'})
bp1.save(function(err) {
console.log("this will print 1")
assert.equal(1, 2)
console.log("this will NOT print")
})
var bp2 = new BlogPost({title: 'blogpost 2'})
bp2.save(function(err) {
console.log("this will print 2")
throw "this error is swallowed"
console.log("this will NOT print")
})
Toute erreur jeté dans la sauvegarde de rappel ne produit aucune sortie dans la console. L'exécution semble arrêter à cette ligne.
Pourquoi cela?
Y at-il une meilleure façon de callbacks écrire, en utilisant peut-être une promesse?
La solution
Vous pouvez utiliser l'objet de connexion erreur événement:
var connection = mongoose.createConnection('mongodb://127.0.0.1/test'),
BlogPost = connection.model('BlogPost', BlogPostSchema);
connection.on("error", function(errorObject){
console.log(errorObject);
...
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow