我正在使用for循环从mongodb检索数据并将其显示在浏览器上,但问题是它只是第一次迭代并停止。所以我只得到第一个条目作为输出。而它在控制台日志中提供了正确的输出。请帮帮忙?
var movieSchema1 = new mongoose.Schema({
name:String,
address:String,
location:String
});
var user=mongoose.model('movie', movieSchema1, 'movie');
for (var i = 0; i < user.length; i++) {
res.json("iteration " + i);
res.json('name:' + user[i].name + user[i].address);
}
答案 0 :(得分:2)
正如其他人所说,为你的回复建立一个对象,然后是res.json()它。因为您正在尝试发送数组,所以只需使用.map()来转换每个数组:
//turn the array of users into the objects we want to send
const responseData = user.map( (movie, i) => {
return {
iteration: i,
name: movie.name + ' ' + movie.address
};
});
//this converts the array to a string for you
res.json( responseData );
答案 1 :(得分:0)
您可以使用find()
方法接收架构中的所有对象。
var response;
user.find({}, function(err, users){
if(err) throw err;
if(users.length != 0){
response = users.map((user, i) => {
return {
index: i,
name: user.name + ' ' + user.address
};
}
})
for(var i = 0; i < response.length; i++){
res.write('Key: ' i + ' the value: ' response[i] + '\n');
}
res.end();
您还应该只使用res.json()
一次,因为它会返回Can't set headers after they are sent
错误。
有关res.json()