Node.js 如何将列表与嵌套的foreach一起使用?

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(

这段代码可以创建我想要的列表。但我不能在线上使用它 上面写着“res.json(tList)”

  • 我可以使用“console.log('我的列表:'+ stringify(tList));“(它正确地显示了我的列表。)

  • res.json(tList)返回“[]”空列表。这个怎么用 线路

  • 这段代码可以创建我想要的列表。但是我不能在写“res.json(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);
        }
    });