我有一个帖子请求,我需要在数组中循环,找到数据库中的用户并将结果发送回视图,但我似乎只能回送第一个用户。如何实现for循环?我不能在循环中使用re.send而res.JSON给了我相同的结果。 我的代码发送回第一个用户:
app.post('/rankcandidates', function(req, res){
var array = JSON.parse(req.body.array);
for (var i = 0;i<array[0].length;i++){
User.find({"_id" : { "$in" : [ array[0][i]._id] }
}).exec(function (err, result) {
res.setHeader('Content-Header', 'application/json');
res.send(JSON.stringify(result));
// also tried res.JSON but doesn't work
});
}
});
我的Ajax电话:
$.post("/rankcandidates",
{ array:JSON.stringify(array) },
function(data,status){
console.log(data); // comes out as a string of the first user
}
});
新问题 - 使用for循环将对象插入数据库:
app.post('/insertPositionIndex', function(req, res){
var array = JSON.parse(req.body.array);
console.log(array[0]); // data shown below
var ids;
var indexes;
for (var i=0;i<array.length;i++){
ids = array[i][0].map(function(element) { return element.position_id });
indexes = array[i][0].map(function(element) { return element.index_position });
console.log(ids);
console.log(indexes);
}
User.update(
{ "_id": req.user._id},
{
"$push":
{
"positionsApplied":{
position_id: ids,
index_position: indexes
}
}
}
).exec(function (err, result) {
res.json({ results: result });
});
});
答案 0 :(得分:1)
一个请求只能返回一个响应。 在您的情况下,您应首先创建用户ID数组,然后查询用户集合,搜索其id与该数组的一个元素匹配的所有用户。这是一个解决方案:
app.post('/rankcandidates', function(req, res){
var array = JSON.parse(req.body.array);
var ids = array[0].map(function(element) { return element._id })
User.find({"_id" : { "$in" : ids }})
.exec(function (err, results) {
res.json(results);
});
});