一般节点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 .collect旅行?

感谢您的时间

最佳答案

使用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/

10-10 10:20