node.js - 如何高效地进行多次 MongoDB 旅行

标签 node.js mongodb

这里是一般 Node mongodb 问题。

我有这个功能:

static addSpaceToCreator = ( userId, spaceId, callback ) => {
        const db = getDb();
        db.collection( process.env.SPACECOLLECTION ).updateOne( { _id: ObjectId( spaceId ) }, { $push: { challengers: ObjectId( userId ) } } );
        db.collection( process.env.USERSCOLLECTION ).updateOne( { _id: ObjectId( userId ) }, { $push: { spaces: ObjectId( spaceId ) } } ).then( r => callback( r ) ).catch( e => callback( e ) );
    };

问题: 有没有更好的方法来进行这样的多次更改?我无法使用批量,因为文档位于不同的集合中。即使我没有回调,是否有更好的方法来进行 2 次 .collection 旅行?

感谢您的宝贵时间

最佳答案

使用Promise.all等待并行查询的结果,如下所示:

static addSpaceToCreator = ( userId, spaceId ) => {
    const db = getDb();

    return Promise.all([
      db.collection( process.env.SPACECOLLECTION ).updateOne( { _id: ObjectId( spaceId ) }, { $push: { challengers: ObjectId( userId ) } } ),
      db.collection( process.env.USERSCOLLECTION ).updateOne( { _id: ObjectId( userId ) }, { $push: { spaces: ObjectId( spaceId ) } } ));
    ]);
};

并像这样使用它:

await addSpaceToCreator(4, 2);

关于node.js - 如何高效地进行多次 MongoDB 旅行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59664195/

相关文章:

javascript - Prerenderer IO:XMLHttpRequest 无法加载 http://::1:12301/dnode/info 和 NETWORK_ERR:XMLHttpRequest 异常 101:

node.js - 需要多次运行 npm update

javascript - 异步/等待错误处理

mongodb - 将 djongo (Mongo ORM) 集成到 Django Rest Framework 中

javascript - 来自客户端的 Meteor.js 和 Mongo : can you insert a new document or parameter into the user. 配置文件?

python - APScheduler 作业重新启动后未运行

node.js - 从 Electron 应用程序运行全局安装的 Node 模块

javascript - 飞行前 OPTIONS 请求 CORS

mongodb - 为什么我的MongoDB $ or查询不起作用?

python - Django 与 mongodb 和 mysql 其中每个数据库用于不同的数据