什么parameter passing给Mongoosecallback

在mongoose文档中,它经常列出某些查询操作符(如findOneAndUpdate )的可选callback,但是它没有提及callback所采用的参数(参数)。 他们是什么,我怎么知道?

此外,如果conditionsupdate等是可选的,我想要指定一个callback在最后,我必须传递null值,或空对象,或者我可以只指定callback – 软pipe是Mong know知道吗?

Model.findOneAndUpdate([conditions], [update], [options], [callback])

对于几乎所有的mongoose查询 ,提供的callback函数将在节点callback模式 callback(err, results)中用两个参数callback(err, results)如文档中所述:

在callback被传递给Mongoose中的查询的任何地方,callback都遵循模式callback(error, results) 。 什么结果取决于操作:对于findOne()它是一个可能为null的单个文档 , find() 文档列表 , count() 文档数量 , update() 受影响的文档数量等。API文档模型提供了有关传递给callback的更多细节。

默认情况下,你可以在callback函数中得到两个参数: errresults 。 第一个包含在运行时期间发生的任何错误,第二个包含文档的旧值。 但是,如果在findOneAndUpdate方法中设置了一些选项,则可以在callback参数中获取其他variables。 我们来看一个例子:

 Model.findOneAndUpdate( { id: id_var }, { $set: { name: name_var } }, {new: true, passRawResult: true}, (err, doc, raw) => { /*Do something here*/ }) 

在这种情况下, new: true选项表示docvariables包含新的更新对象。 passRawResult: true选项表示您可以获取MongoDB驱动程序的原始结果作为第三个callback参数。 原始参数包含更新的结果,如下所示:

 "raw": { "lastErrorObject": { "updatedExisting": true, "n": 1 }, "value": { /*the result object goes here*/}, "ok": 1, "_kareemIgnore": true } 

根据官方的mongoose文档,你可以像这样调用findOneAndUpdate

 query.findOneAndUpdate(conditions, update, options, callback) // executes query.findOneAndUpdate(conditions, update, options) // returns Query query.findOneAndUpdate(conditions, update, callback) // executes query.findOneAndUpdate(conditions, update) // returns Query query.findOneAndUpdate(update, callback) // returns Query query.findOneAndUpdate(update) // returns Query query.findOneAndUpdate(callback) // executes query.findOneAndUpdate() // returns Query 

所以你可以传递你的callback,不需要为其他parameter passingnull

http://mongoosejs.com/docs/api.html#query_Query-findOneAndUpdate