Node.在另一个保存事件上更新数据库对象



将更改保存到其他对象时创建/更新对象的最方便方法是什么?假设我们有一个模型客户端,我们在保存时发出事件。

clientSchema.post('save', function (client) {
    process.emit('clientUpdate', client);
});

然后我们可以订阅该事件,例如:

process.on('clientUpdate', function(client) {
  //LOGIC GOES HERE
});

假设我们现在要更新客户端投影。您将在哪里找到侦听器以及如何实现mongoDB(猫鼬(的更新逻辑 - 使用模型,由dao等?

我相信

您可以避免发出另一个事件,而只需在保存后的钩子中进行更新。例如:

clientSchema.post('save', function (client, next) {
    ClientProjection.update( {/*  Query Parameters */}, 
                             {/* Data to update */}, 
                             function(err, clientProjection) {
                                 next()
                             }
});

在保存后的钩子中,如果要调用异步函数,则需要添加 next 作为第二个参数,并在异步操作完成后在回调中调用它。请参阅猫鼬中间件文档的Asynchronous Post Hooks部分

最新更新