我采用MVC开发应用程序。我遇到一个问题,就是不知道参数如何传递给回调函数。
animal.js(模型)
var mongoose = require('mongoose')
, Schema = mongoose.Schema
var animalSchema = new Schema({ name: String, type: String });
animalSchema.statics = {
list: function(cb) {
this.find().exec(cb)
}
}
mongoose.model('Animal', animalSchema)
animals.js (控制器)
var mongoose = require('mongoose')
, Animal = mongoose.model('Animal')
exports.index = function(req, res) {
Animal.list(function(err, animals) {
if (err) return res.render('500')
console.log(animals)
}
}
这里是我的问题:为什么模型中的“list”只能执行回调而不传递任何参数?实际上,err和animals来自哪里?
我认为我可能错过了与node.js和mongoose中回调相关的一些概念。如果您可以提供一些解释或指向一些资料,非常感谢。
callback(err, objects)
,该函数映射到function (err, animals)
。因此,objects被映射到animals。 - pfriedthis.find().exec(cb)
时,this.find()
返回两个变量 "err" 和 "objects" 并调用cb(err, objects)
。因此它映射到function(XXX, YYY)
,在这种情况下是function(err, animals)
。 - LKSerr
和objects
是如何传递给回调函数的。 - LKS