【发布时间】:2013-03-08 09:49:28
【问题描述】:
我正在从我的路由中获取一个请求参数,例如mydomain.com/topic/animals 其中requestParam = req.params.topicName 在这种情况下为animals。
我遍历一个包含所有可能主题的对象,然后如果找到与 requestParam 匹配的 topicName,然后我想执行对数据库的调用以返回该主题的所有集合。
问题在于它是同步执行的,因为它总是会执行 else 子句,例如
if (requestParam === topicName) {
// fetch submission
} else {
// return 404
}
所以它总是返回 404,但如果我在这里去掉 else 子句,它就会起作用。我查看了下划线的_.after(),但无法使其正常工作(甚至不确定这是否是我应该使用的?
我的代码:
_.each(topics, function(key, topic) {
var topicName = key['topicName'],
if (requestParam === topicName) {
Submission.getTopicSubmissions({ topicName : topicName }, function(err, submissions) {
if (err) {
res.redirect('/');
} else if (submissions) {
res.render('topic', {
submissions: submissions
});
} else {
res.redirect('/topics');
}
});
} else {
res.render('errors/404', {
title: 'Page Not Found -',
status: 404,
url: req.url
});
}
});
【问题讨论】:
标签: javascript node.js mongodb asynchronous underscore.js