【发布时间】:2020-04-29 11:18:48
【问题描述】:
我一直在尝试使用从 MongoDB 数据库中提取的数据创建一个 JSON 对象。
最后一行 res.status(200).json(userData) 似乎之前返回了响应 数据处理结束,所以我得到一个没有处理数据的空对象作为响应。关于如何解决这个问题的任何想法?
// chats are defined before, but excluded here to make a code easier to read
let userData = {};
chats.forEach(function(chat){
let chatId = chat.id;
let userIds = chat['userIds'];
UserAccountingData.find({userId: {$in : userIds}}, function(err, userAccountingData){
if(err){
console.log(err);
res.status(404).json('User data not found.');
return;
} else {
userAccountingData.forEach(function(data){
console.log({
imageUrl: data.imageUrl,
firstName: data.firstName,
lastName: data.lastName
});
userData[data.userId] = {
imageUrl: data.imageUrl,
firstName: data.firstName,
lastName: data.lastName
};
});
}
});
});
res.status(200).json(userData);
Console.log 显示有数据来自数据库:
{ imageUrl: 'www.test.de', firstName: 'Fender', lastName: 'Fen' }
{ imageUrl: 'www.test.de', firstName: 'Baveler', lastName: 'Bav' }
感谢您的宝贵时间
【问题讨论】:
-
您能确认 data.userId 中的内容吗?
-
它只是一个字符串形式的聊天对象 ID,如下所示:“5b1232142512c6166c04e655”
-
因为您的
UserAccountingData.find似乎是一个异步调用。当您返回响应时,它不会被填满。尝试填充userData对象并将数据作为承诺返回。
标签: javascript mongodb foreach