我正在尝试在 const 中推送一个值,但它在 .then 中并且它不起作用你知道我该怎么做吗?

我在我的 console.log(newResult) 中的 if 中获得了一个值,但数据没有推送到我的 const newResult 中返回
res.status(200).json(newResult);

.then(function (friends) {
    if (friends) {
        const newResult = [];
        friends.forEach((r) => {
            if (r.UserID == userFound.id) {
                models.User.findOne({
                        where: {
                            id: r.idFriend
                        }
                    })
                    .then(function(userFound) {
                        newResult.push({
                            id: r.id,
                            user: {
                                id: r.User.id,
                                email: userFound.email,
                                username: userFound.username
                            }

                        });
                        console.log(newResult)
                    })
            } else
                newResult.push({
                    id: r.id,
                    user: {
                        id: r.User.id,
                        email: r.User.email,
                        username: r.User.username
                    }
                });
            console.log(newResult)
        });
        res.status(200).json(newResult);
    }
}

当我进入 if 条件时,实现的每个测试都会返回一个空标签

最佳答案

它永远不会工作,因为你在做 async 调用
forEach 里面的 models.User.findOne

当异步调用数据库以获取用户时,您将在 console.log 上获得结果。

但在这一切发生之前,forEach 已完成执行并且代码命中 res.status(200).json(newResult); 行,并且您看不到 if 条件的结果。

不使用这种方法,而是使用 mongoose populate 并填充基于 userObject 的 userID ,同时以这种方式查找 friends ,您不必在 forEach 内部进行异步调用。

关于javascript - 将数组插入 .then 内的 const,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49922844/

10-12 12:20