2015-04-10 2 views
5

В mongoose documentation он часто перечисляет необязательный обратный вызов для определенных операторов запроса (например, findOneAndUpdate), однако он не упоминает, какие параметры (аргументы) выполняет обратный вызов. Что они, и как я узнаю?Какие параметры переданы обратным вызовам Mongoose

Кроме того, если conditions, update и т.д. не являются обязательными, и я хочу, чтобы задать функцию обратного вызова в конце концов, я должен передать значения null или пустых объектов или я могу просто указать обратный вызов - и шланг знает ли Мангуст?

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

+0

Я не уверен. Но может быть, следующее вам полезно. http://stackoverflow.com/questions/15266162/arguments-to-callback-function-in-mongoose-express-and-node-js –

ответ

7

Для почти всех mongoose queries предоставленных callback функция вызывается с двумя аргументами в node callback patterncallback(err, results), как указано в документации:

Anywhere обратного вызова передается запрос в Мангуста, обратный вызов по образцу callback(error, results). Какие результаты зависит от работы: Для findOne() это potentially-null single document, find()list of documents, count()number of documents, update()number of documents affected и т.д. API docs for Models предоставить более подробную информацию о том, что передается в функции обратного вызова.

1

Согласно официальной документации мангустов вы можете назвать 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 

Таким образом, вы можете просто передать свой обратный вызов, нет необходимости передавать нуль для других параметров

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

2

По умолчанию вы можете получить два параметра в функции обратного вызова: err и results. Первый содержит все ошибки, которые произошли во время выполнения, а второй - старое значение документа. Однако вы можете получить другие переменные в параметрах обратного вызова, если вы установите некоторые параметры в методе findOneAndUpdate. Давайте посмотрим это на примере:

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

В этом случае параметр new: true указывает, что переменная документ содержит новый обновленный объект. Опция passRawResult: true указывает, что вы можете получить исходный результат драйвера MongoDB в качестве третьего параметра обратного вызова. Необработанный параметр содержит результат обновления: примерно

"raw": { 
    "lastErrorObject": { 
     "updatedExisting": true, 
     "n": 1 
    }, 
    "value": { /*the result object goes here*/}, 
    "ok": 1, 
    "_kareemIgnore": true 
} 
Смежные вопросы