2015-04-10 15 views
5

Trong số mongoose documentation nó thường liệt kê một cuộc gọi lại tùy chọn cho một số toán tử truy vấn nhất định (như findOneAndUpdate), tuy nhiên, nó không đề cập đến tham số nào. Chúng là gì, và làm sao tôi biết được?Thông số nào được chuyển đến số gọi lại Mongoose

Ngoài ra, nếu conditions, update vv là không bắt buộc, và tôi muốn chỉ định một callback ở cuối, tôi phải vượt qua trong các giá trị null, hoặc các vật rỗng hoặc có thể tôi chỉ cần chỉ định gọi lại - và ống Mongoose biết gì?

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

+0

Tôi không chắc chắn. Nhưng có thể sau đây là hữu ích cho bạn. http://stackoverflow.com/questions/15266162/arguments-to-callback-function-in-mongoose-express-and-node-js –

Trả lời

7

Cho gần như tất cả mongoose queries được cung cấp callback chức năng sẽ được gọi với hai đối số trong node callback patterncallback(err, results) như đã nêu trong tài liệu:

Anywhere một callback sẽ được chuyển cho một truy vấn trong Mongoose, gọi lại sau mô hình callback(error, results). Có gì kết quả là phụ thuộc vào các hoạt động: Đối với findOne() nó là một potentially-null single document, find() một list of documents, count() các number of documents, update() các number of documents affected, vv API docs for Models cung cấp chi tiết hơn về những gì được thông qua vào callbacks.

1

Theo tài liệu mongoose chính thức bạn có thể gọi findOneAndUpdate như thế này

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 

Vì vậy, bạn chỉ có thể vượt qua callback của bạn, không cần phải vượt qua null cho các thông số khác

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

2

Theo mặc định, bạn có thể nhận được hai tham số trong hàm gọi lại: errresults. Đầu tiên chứa bất kỳ lỗi nào xảy ra trong thời gian chạy và giá trị thứ hai có giá trị cũ của tài liệu. Tuy nhiên, bạn có thể nhận các biến khác trong tham số gọi lại nếu bạn đặt một số tùy chọn trong phương thức findOneAndUpdate. Hãy xem ví dụ này với ví dụ:

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

tùy chọn này cho biết biến tài liệu chứa đối tượng mới được cập nhật. Tùy chọn passRawResult: true cho biết rằng bạn có thể lấy kết quả thô của trình điều khiển MongoDB làm tham số gọi lại thứ ba. Thông số thô chứa kết quả của bản cập nhật, như sau:

"raw": { 
    "lastErrorObject": { 
     "updatedExisting": true, 
     "n": 1 
    }, 
    "value": { /*the result object goes here*/}, 
    "ok": 1, 
    "_kareemIgnore": true 
} 
Các vấn đề liên quan