我在前面使用 jQuery 使用 $.post() 发出 AJAX 发布请求。我还传递了一个成功函数,它将对返回的数据做一些事情。在我的 node.js 服务器上,我使用 express 来处理请求,发布请求调用另一个传递回调的函数,该回调在回调中执行 res.send()。在回调完成之前,我怎样才能让请求不完成?
我的客户端代码是:
$.post("/newgroup/", {name: newgroupname}, function(data) {
console.log(data); // Returns undefined because requests ends before res.send
});
我的服务器端代码是:
app.post('/newgroup/', function(req, res){
insertDocument({name:req.body.name, photos:[]}, db.groups, function(doc){
res.send(doc);
});
});
insertDocument 函数是:
function insertDocument(doc, targetCollection, callback) {
var cursor = targetCollection.find( {}, {_id: 1}).sort({_id: -1}).limit(1);
cursor.toArray(function(err, docs){
if (docs == false){
var seq = 1;
}
else {
var seq = docs[0]._id + 1;
}
doc._id = seq;
targetCollection.insert(doc);
callback(doc);
});
}