我目前正在使用Express + Node开发应用。我最近使用以下语法向.post
文件添加了新的app.js
路由:
app.post('/api/posts/saveComment', posts.saveComment);
posts
在上面定义为:
var posts = require('./routes/posts.js');
saveComment
的定义如下:
exports.saveComment = function(req, res) {
//function stuff in here, yada yada
}
现在,当我尝试运行应用程序时,节点发出错误:
Error: .post() requires a callback functions but got a [object Undefined]
saveComment
显然是一个功能,我不明白为什么它看不到这个。我在saveComment
之上定义了另一个函数,我能够完全正确地引用而没有错误,但是将函数内容复制到saveComment
的函数仍会产生相同的错误。我很茫然,非常感谢任何帮助。
每个请求,posts.js
var mongo = require('../mongo.js');
exports.queryAll = function(req, res) {
var db = mongo.db;
db.collection('posts', function(err, collection) {
collection.find().toArray(function(err, doc) {
if (err)
res.send({error:err})
else
res.send(doc)
res.end();
});
});
}
exports.saveCommment = function(req, res) {
var db = mongo.db,
BSON = mongo.BSON,
name = req.body.name,
comment = req.body.comment,
id = req.body.id;
db.collection('posts', function(err, collection) {
collection.update({_id:new BSON.ObjectID(id)}, { $push: { comments: { poster:name, comment:comment }}}, function(err, result) {
if (err) {
console.log("ERROR: " + err);
res.send(err);
}
res.send({success:"success"});
res.end();
});
});
}
答案 0 :(得分:10)
嗯......令人尴尬的答案,saveCommment
在我的posts.js
中被定义为3米。啊。
答案 1 :(得分:0)
您是否看过其他相关问题?
如:
Understanding callbacks in Javascript and node.js
understanding the concept of javascript callbacks with node.js, especially in loops
我自己也在讨论这个话题,不得不说回调是一个快乐的node.js app的基础。
希望这会有所帮助。
答案 2 :(得分:0)
我按照以下方式编写出口。也许这会对你有所帮助:)。
module.export = {
savecomment : function(){
yada yada
},
nextfunction : function(){
}
}
使用功能:
var helper = require('helper.js')
helper.savecomment();