Node.js 如何将列表与嵌套的foreach一起使用?
这段代码可以创建我想要的列表。但我不能在线上使用它 上面写着“res.json(tList)”Node.js 如何将列表与嵌套的foreach一起使用?,node.js,arrays,express,foreach,nested-loops,Node.js,Arrays,Express,Foreach,Nested Loops,这段代码可以创建我想要的列表。但我不能在线上使用它 上面写着“res.json(tList)” 我可以使用“console.log('我的列表:'+ stringify(tList));“(它正确地显示了我的列表。) res.json(tList)返回“[]”空列表。这个怎么用 线路 这段代码可以创建我想要的列表。但是我不能在写“res.json(tList)”的行中使用它 在尝试使用正在异步操作中生成的结果之前,您没有正确地等待异步操作完成。因此,您试图在添加任何项之前使用tList(
tList
(时间问题)
对于可能拒绝的任何承诺,您也没有任何适当的错误处理
如果切换到for
循环,然后可以使用async/await
对异步操作进行排序,这是一个容易得多的问题:
var app = express();
var cloud = firebase.firestore();
app.get('/getMyDatas', function (req, res) {
let tList = [];
let tJson = {};
cloud.collection('contents/').orderBy('date').get().then((contents) => {
contents.docs.forEach(cont=> {
cloud.collection('userprofile/').where('userId', '==', cont.data().userId).get().then((users) => {
users.docs.forEach(user => {
tJson = {description:cont.data().description, name:user.data().name};
tList.push(tJson);
tJson = {};
console.log("LIST IS FILLED SUCCESFULLY : " + JSON.stringify(tList));
});
});
});
console.log(" ??HERE THE LIST IS EMPTY : " + JSON.stringify(tList));
res.json(tList);
});
});
这回答了你的问题吗?感谢你对我的发展做出的贡献,上帝保佑你!
app.get('/getMyDatas', async function (req, res) {
try {
let contents = await cloud.collection('contents/').orderBy('date').get();
let tList = [];
for (let cont of contents.docs) {
let users = await cloud.collection('userprofile/').where('userId', '==', cont.data().userId).get();
for (let user of users) {
tList.push({description:cont.data().description, name:user.data().name});
}
}
res.json(tList);
} catch(e) {
console.log(e);
res.sendStatus(500);
}
});