Javascript 使用mongodb驱动程序通过mongoose连接更改流

Javascript 使用mongodb驱动程序通过mongoose连接更改流,javascript,node.js,mongodb,mongoose,changestream,Javascript,Node.js,Mongodb,Mongoose,Changestream,如何使用mongodb驱动程序监视数据库中的更改,同时使用mongoose连接数据库。Mongoose文档提供了很少关于如何使用变更流的示例。在我的例子中,更改流仅在没有提供管道选项的情况下工作。我认为这是管道对象语法的问题,但我仔细地遵循了mongodb文档中的示例。问题要么在于管道对象,要么在于mongoose如何实现变更流。感谢您的帮助 以下是我目前的方法(不起作用): mongoose .connect(db, { useNewUrlParser: true, useFi

如何使用mongodb驱动程序监视数据库中的更改,同时使用mongoose连接数据库。Mongoose文档提供了很少关于如何使用变更流的示例。在我的例子中,更改流仅在没有提供管道选项的情况下工作。我认为这是管道对象语法的问题,但我仔细地遵循了mongodb文档中的示例。问题要么在于管道对象,要么在于mongoose如何实现变更流。感谢您的帮助

以下是我目前的方法(不起作用):

mongoose
.connect(db, {
    useNewUrlParser: true,
    useFindAndModify: false,
    useUnifiedTopology: true
    // useCreateIndex: true
})
.then(() => {
    console.log("Connected to MongoDB...");
})
.catch(err => {
    console.log(err);
});

const pipeline = { 
   $match: {
      $or: [{ operationType: 'insert' },{ operationType: 'update' }], 
      'fullDocument.institution': uniId 
   } 
};

const options = { fullDocument: 'updateLookup' }

changeStream.on("change", next => {
        switch(next.operationType) {
          case 'insert':
            console.log('an insert happened...', "uni_ID: ", next.fullDocument.institution);
            let rooms = Object.keys(socket.rooms);
            console.log("rooms: ", rooms);

            nmsps.emit('insert', {
              type: 'insert',
              msg: 'New question available',
              newPost: next.fullDocument
            });
            break;

          case 'update':
            console.log('an update happened...');

            nmsps.emit('update', {
              type: 'update',
              postId: next.documentKey._id,
              updateInfo: next.updateDescription.updatedFields,
              msg: "Question has been updated."
            });
            break;

          case 'delete':
            console.log('a delete happened...');

            nmsps.emit('delete', {
              type: 'delete',
              deletedId: next.documentKey._id,
              msg: 'Question has been deleted.'
            });
            break;

          default:
            break;
        }
      })