我遵循MCV方法来开发我的应用程序。我遇到一个问题,我不知道如何将参数传递给回调函数。mongoose,express和node.js中的回调函数的参数
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)
}
}
这里我的问题是:为什么在 “名单” 中的模型只是执行回调不传递任何论据?错误和动物究竟来自哪里?
我想我可能会错过一些与node.js和mongoose中的回调有关的概念。如果您能提供一些解释或指向某些材料,非常感谢。
感谢您的回答。我了解你答案的第一部分。但是我对第二部分感到困惑:列表函数从未声明一个名为“animals”的变量。它如何将它从数据库收到的对象映射到“动物”? – LKS 2013-03-07 09:32:40
它不必知道对象的名称,它只是调用映射到'function(err,animals)'的'callback(err,objects)'。所以对象被映射到动物 – pfried 2013-03-07 09:34:07
也许你错过了那个回调被传递给列表函数,执行发生在列表函数内部,你看不到这里 – pfried 2013-03-07 09:45:37