gpt4 book ai didi

node.js - Mongoose.js 吞下保存回调中的错误?

转载 作者:搜寻专家 更新时间:2023-10-31 22:44:14 25 4
gpt4 key购买 nike

这是一个孤立的问题示例:

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

保存回调中抛出的任何错误都不会在控制台中产生任何输出。执行似乎在那一行暂停。

为什么会这样?

有没有更好的方法来编写回调,也许是使用 Promise?

最佳答案

您可以使用连接对象错误事件:

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

connection.on("error", function(errorObject){
console.log(errorObject);
...
});

关于node.js - Mongoose.js 吞下保存回调中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7801637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com