MongoDB, Mongoose 在 x 时间后删除元素并接收事件
MongoDB, Mongoose delete element after x time and receive event
我有一个 expressjs api,它使用 mongoose 来管理 MongoDB。现在我有一个名为通知的文档,一些用户会在满足某些条件时收到通知,例如新项目可供用户使用。通知仅在 x 时间内发送(存储在用户设置中)并且每个用户在通知集合中最多可以有 1 个通知。通知发送后将被删除。
我当然可以每隔 x 次检索有通知的用户的所有用户设置。然后查看(时间比较)现在可以通知哪些用户。
我想在 x 时间后删除通知,然后收到删除事件,然后我可以根据该事件发送通知。
我所做的是创建另一个 collection 例如通知Ttl。 NotificationTtl 仅在创建 Notification 时创建,并根据用户设置正确设置 ttl。
我们再做一个collection,因为最好不要在通知发送之前删除它。我们可以添加一个带有 notificaiton_id 的字段,但是因为每个通知都有一个 notificationttl 我们可以给 notificationttl 与通知相同的 id。
var NotificationTtlSchema = new Schema({ date: { type: Date, index: { unique: true, expires: '1d' }})
var NotificationTtl = mongoose.model('NotificationTtl', NotificationTtlSchema);
NotificationTtl.watch().
on('change', data => {
//this will be called ever time create/update/delete executes here we can listen for delete
});
然后在手表中我们可以侦听删除操作,如果删除操作已执行,我们可以获得通知ttl 的 ID,使用该 ID,我们可以检索通知并发送通知,发送后我们可以删除。
只有当 mongodb 是一个副本集和一个主节点时,这一切才有效,否则监视功能将不起作用。
所以现在发生的是每次通知 ttl 到期时我都会在我的手表中收到一个事件。该事件将具有名为 delete 的操作类型,然后我将检索正确的通知并将其发送给用户。
我有一个 expressjs api,它使用 mongoose 来管理 MongoDB。现在我有一个名为通知的文档,一些用户会在满足某些条件时收到通知,例如新项目可供用户使用。通知仅在 x 时间内发送(存储在用户设置中)并且每个用户在通知集合中最多可以有 1 个通知。通知发送后将被删除。
我当然可以每隔 x 次检索有通知的用户的所有用户设置。然后查看(时间比较)现在可以通知哪些用户。
我想在 x 时间后删除通知,然后收到删除事件,然后我可以根据该事件发送通知。
我所做的是创建另一个 collection 例如通知Ttl。 NotificationTtl 仅在创建 Notification 时创建,并根据用户设置正确设置 ttl。
我们再做一个collection,因为最好不要在通知发送之前删除它。我们可以添加一个带有 notificaiton_id 的字段,但是因为每个通知都有一个 notificationttl 我们可以给 notificationttl 与通知相同的 id。
var NotificationTtlSchema = new Schema({ date: { type: Date, index: { unique: true, expires: '1d' }})
var NotificationTtl = mongoose.model('NotificationTtl', NotificationTtlSchema);
NotificationTtl.watch().
on('change', data => {
//this will be called ever time create/update/delete executes here we can listen for delete
});
然后在手表中我们可以侦听删除操作,如果删除操作已执行,我们可以获得通知ttl 的 ID,使用该 ID,我们可以检索通知并发送通知,发送后我们可以删除。
只有当 mongodb 是一个副本集和一个主节点时,这一切才有效,否则监视功能将不起作用。
所以现在发生的是每次通知 ttl 到期时我都会在我的手表中收到一个事件。该事件将具有名为 delete 的操作类型,然后我将检索正确的通知并将其发送给用户。