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 这个方法批量执行上述操作。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题