【发布时间】:2017-03-04 06:23:34
【问题描述】:
我正在寻找有关如果由于找不到对象_id 而导致操作失败时mongoose 回调得到什么参数的文档。我找不到任何东西。因此,我自己比较了三个案例。使用id = 'foofoofoofoo' 调用会发生以下情况:
// returns: err = null, obj = null
mySchema.statics.findById = function(id, cb) {
this.findOne({ _id: new ObjectId(id) }, cb);
}
// returns: err = null, obj is a cursor with obj.result = { n: 0, ok: 1 }
mySchema.statics.deleteById = function(id, cb) {
this.remove({ _id: new ObjectId(id) }, cb);
}
// returns: err = null, obj is an Object with obj = { n: 0, nModified: 0, ok: 1 }
mySchema.statics.updateById = function(id, updObj, cb) {
this.where({ _id: new ObjectId(id) }).update(updObj, cb);
}
这个恕我直言是一个可怕的结果。我得到三种完全不同的类型作为cb 中的第二个参数:null、光标和简单对象。甚至cursor.result 也不等于结构中的“简单对象”。
我的问题是:
- 我是否在这里使用了一些反模式/混合语法导致这种不一致的结果?
- 在哪里可以找到有关在不同情况下调用 mongoose 回调的结果的详细信息?
【问题讨论】:
-
我认为您可以阅读文档中的这些链接:1) mongoosejs.com/docs/models.html 。和 2) mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate 我个人总是尝试处理错误。 :-)
-
1) 感谢您的链接,但正是在该文档中,如果找不到 _id,我没有找到关于回调得到什么的详细信息; 2)我提出的所有3个案例都没有错误:(
标签: javascript node.js mongodb mongoose mongoose-schema