【发布时间】:2014-10-20 12:27:27
【问题描述】:
我之前有多个回调,然后我想做一个 res.send() 来构建 JSON API:
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] },
....
最后返回[]。
[编辑]
[完整代码]
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
-
它应该返回一个 JSON,但它返回一个空数组 []。如果我做一些简单的事情, res.send() 就可以了。但是当我在函数中使用函数时,我认为有些地方是错误的。
-
你搞砸了。您的 findIdPages 函数在哪里?它的作用是什么?
-
如果你想发回 JSON,你应该使用
res.json()。 -
@Jarema findIdPages 只是返回一个带有回调的值。问题是我可以看到要显示为 API 的数据(在日志中)。
标签: javascript node.js mongodb express