Mongoose.js Ошибки глотает в сохранении обратного вызова?

StackOverflow https://stackoverflow.com/questions/7801637

  •  22-10-2019
  •  | 
  •  

Вопрос

Вот изолированный пример проблемы:

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

Любая ошибка, добавленная в обратный вызов, не дает вывода в консоли. Исполнение, кажется, останавливается на этой строке.

Почему это происходит?

Есть ли лучший способ написать обратные вызовы, возможно, использовать обещание?

Это было полезно?

Решение

Вы можете использовать объект соединения ошибка мероприятие:

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

connection.on("error", function(errorObject){
  console.log(errorObject);
  ...
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top