我以前多次回调,然后我想做一个res.send()来构建JSON API:ExpressJS /猫鼬res.send()不工作
app.get('/api', function (req, res){
...
function logPagesId() {
console.log("load: " +pagesId);
console.log("lenght: " +pagesId.length);
findWords(logWords);
}
function logWords() {
console.log("TAGS: "+wordsArray);
return res.send(wordsArray);
}
findIdPages(logPagesId);
}
在日志中,我有:
Successfully connected to MongoDB
load: 45678bdhbdns768,45678bdhbdns765
lenght: 2
TAGS:
{ _id: 45678bdhbdns765,
result:
{ ID1: { Pages: [Object], Name: [Object] },
ID2: { Pages: [Object], Name: [Object] },
....
最后,它返回[]。
[编辑]
[FULL CODE]
app.get('/tags/reference/:reference', function (req, res){
var articlesId = [];
var tagsArray = [];
function findIdArticles(callback) {
Articles.find({reference: req.params.reference}, '_id' , function (err, articles) {
if (!err) {
for (var i = 0; i < articles.length; i++) {
articlesId.push(articles[i]._id);
}
for (i=0 ; i < articlesId.length; i++){
Extract_Tags.findById(articlesId[i], function (err, tags) {
if (!err) {
tagsArray.push(tags);
console.log(tags);
callback(null, tagsArray);
} else {
callback(err);
}
});
}
} else {
callback(err);
}
});
}
function logArticlesId(err, response) {
res.status(503).send('fancy server side error message!');
console.log("load: " +articlesId);
console.log("tagsArray: " +tagsArray);
console.log("response: " +response);
logTags(response);
}
function logTags(response) {
console.log("TAGS: "+response);
res.send(response);
}
findIdArticles(logArticlesId);
});
以下是完整的代码与一些变化。只是有错误花哨的服务器端错误消息! 感谢您的帮助
什么不按预期工作?你有什么试图解决这个问题?你使用什么版本的快递?抛出的错误是什么?很多问题,很少的信息。 -1 – Sprottenwels 2014-10-20 12:33:06
它应该返回一个JSON,但它返回一个空数组[]。如果我做一些简单的事情,res.send()可以工作。但是,当我在函数中使用函数时,我认为存在一些错误。 – Jose 2014-10-20 12:34:39
你搞砸了。你的findIdPages函数在哪里?它在做什么? – Jarema 2014-10-20 12:52:02