【发布时间】:2014-05-07 23:38:06
【问题描述】:
我有一个包含路由的应用程序文件和另一个编写的模块,该模块具有猫鼬模式和集合的模型对象。应用代码为:
app.post("/saveNode", function(req, res) {
console.log(req.body.clientId)
if(req.body.hasOwnProperty("clientId")) {
defferedObject = nodeDbObject.returnCollectionObject(req.body);
}
}
从路由中我调用了mongoosemodel(returnCollectionObject)对象的函数,它将在调用后获得的body保存到数据库中。这个函数是写在模块中的。相同的代码如下:
exports.returnCollectionObject = function(body) {
var collection = "refresh_hierarchy";
var nodeModelObject = mongoose.model(collection, folderSchema);
return nodeModelObject.create(body, function(err, resp) {
if(err == null) {
return resp;
}
});
};
我正在从我为帖子编写的路线中调用此函数。我希望从我的路由内部从这个function(resp) 返回的对象,以便我可以使用它的一些字段在response 中返回。尝试在defferedObject 上使用.done(),但return resp 不返回任何内容。我做对了吗?这是完成功能的代码。
app.post("/saveNode", function(req, res) {
if(req.body.hasOwnProperty("clientId")) {
defferedObject = nodeDbObject.returnCollectionObject(req.body);
defferedObject.done(function(resp) {
res.send({"data": resp.uniqueNodeId, "error": err});
res.end();
});
}
}
这只是我编写节点服务的第一次尝试。任何人都可以帮我解决这个问题。可以这样做吗?我得到的错误如下。
TypeError: Cannot call method 'done' of undefined
【问题讨论】:
-
你没有从你的函数中返回一个承诺。事实上,你没有返回任何东西。
-
也尝试了返回。它返回一个promise对象并说它有两个方法完成和错误。但是当我写完整的东西时它不会执行。你能说出为什么会这样吗?
标签: javascript node.js express mongoose