Javascript 使用mongodb驱动程序通过mongoose连接更改流
如何使用mongodb驱动程序监视数据库中的更改,同时使用mongoose连接数据库。Mongoose文档提供了很少关于如何使用变更流的示例。在我的例子中,更改流仅在没有提供管道选项的情况下工作。我认为这是管道对象语法的问题,但我仔细地遵循了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
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;
}
})