Frage

Hier ist ein isoliertes Beispiel für das Problem:

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")
})

Jeder Fehler, der in den Save Callback geworfen wird, erzeugt keine Ausgabe in der Konsole. Die Ausführung scheint in dieser Zeile zu pausieren.

Warum passiert das?

Gibt es eine bessere Möglichkeit, Rückrufe zu schreiben, vielleicht ein Versprechen zu verwenden?

War es hilfreich?

Lösung

Sie können das Verbindungsobjekt verwenden Error Veranstaltung:

var connection = mongoose.createConnection('mongodb://127.0.0.1/test'),
    BlogPost = connection.model('BlogPost', BlogPostSchema);

connection.on("error", function(errorObject){
  console.log(errorObject);
  ...
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top