nodejs 的 for 循环中数据库查询写入的优化

最近接手一个项目,其中有一段代码,根据原则不应该在 for 循环中使用数据库的查询等操作。我想优化,但无从下手,请指导下。

const counts = users.length;
let i;
for(i = 0; i < counts; i++) {
    const userID = msg.users[i].id;
    const username = msg.users[i].username;

    let user = await db.user.findOne({userid: userID, isleft: 1});
    if (user) {
        await db.user.findOneAndUpdate({userid: userID},{$set:{isleft: 0}});
    } else {
        await db.user.insert({userid: userID, username: username, isleft: 0});
    }
    db.close();
}
阅读 2.3k
1 个回答

看上去是先查找了一下,如果数据库中存在则更新、不存在则插入。

那你可以用 Bulk.find.upsert 这个方法批量执行上述操作。

推荐问题