我正在寻找关于如果由于找不到对象_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);
}
这个imho是一个可怕的结果。我在cb
中得到了三个完全不同的类型作为第二个参数:a null
,一个游标和一个简单的对象。甚至cursor.result
都不等于结构中的“简单对象”。
我的问题是:
答案 0 :(得分:1)
回调函数中的第二个参数result
会有所不同,这取决于操作。查看更多详情here:
在Mongoose中将回调传递给查询的任何地方,回调都遵循模式
callback(error, results)
。results
取决于操作:
- 对于
findOne()
,它是可能为空的单个文档。find()
文件清单count()
文件数量update()
受影响的文档数量等API docs for Models提供了有关传递给回调的内容的更多详细信息。
希望得到这个帮助。