Javascript 跟踪新插入的文档并执行特定事件

Javascript 跟踪新插入的文档并执行特定事件,javascript,node.js,mongodb,push-notification,scheduled-tasks,Javascript,Node.js,Mongodb,Push Notification,Scheduled Tasks,我有一个帖子的集合当用户对帖子发表评论时,它将被保存在一个名为评论的嵌入式文档中。现在的问题是,我必须每隔2小时发送一个推送通知,就像这样你对该帖子的所有者有12条新评论 现在,点击推送通知后,它会在看到这些评论后将我重定向到该评论。现在,如果一条新评论反对帖子,那么2小时后,我会像这样你在这篇帖子上有3条新评论 您可以在我的模式中看到,我将维护total_comments字段。问题是我如何管理此基于时间的推送通知,以及如何识别和维护新注释的跟踪记录。我是否应该在模式中添加一些键,并编写cron

我有一个
帖子的集合
当用户对帖子发表评论时,它将被保存在一个名为
评论
的嵌入式文档中。现在的问题是,我必须每隔
2小时发送一个推送通知,就像这样
你对该帖子的
所有者
有12条新评论

现在,点击推送通知后,它会在看到这些评论后将我重定向到该评论。现在,如果一条新评论反对帖子,那么2小时后,我会像这样
你在这篇帖子上有3条新评论

您可以在我的模式中看到,我将维护
total_comments
字段。问题是我如何管理此
基于时间的推送通知
,以及如何识别和维护新注释的跟踪记录。我是否应该在模式中添加一些
,并编写
cron作业
以发送推送通知

任何帮助都将不胜感激

这是我的记录

{
 "_id" : ObjectId("57b3aa2db630347c1f9308b4"),
    "updated" : ISODate("2016-08-30T05:05:18.301Z"),
    "created" : ISODate("2016-08-17T00:05:01.354Z"),
    "createdTimeStamp" : 1471392301,
    "likes" : [],
    "comments" : [ 
        {
            "created" : 1471935213,
            "user" : ObjectId("57b33c810a56a0a81a9b50b7"),
            "text" : "next party",
            "_id" : ObjectId("57bbf2edee7a923c156c2f08")
        }, 
        {
            "created" : 1471935612,
            "user" : ObjectId("57b33c810a56a0a81a9b50b7"),
            "text" : "its new party ",
            "_id" : ObjectId("57bbf47cddd701302ba14fca")
        }, 
        {
            "created" : 1471935717,
            "user" : ObjectId("57b33c810a56a0a81a9b50b7"),
            "text" : "its new again",
            "_id" : ObjectId("57bbf4e5f934024c275f4f08")
        }, 

    ],
    "total_comments" : 3,
    "consumer_id" : ObjectId("57b33c810a56a0a81a9b50b7") // Original User that receive notification 
}

我想有两种方法可以计算新的评论

第一名:

在用户模式中存储密钥
lastVisit
。 然后执行类似于
db.posts.count的操作({'comments.created':{$gte:$$$$您的上次访问$$$})

注释。创建的
必须成为日期

秒:

将键
存储为:boolean
在注释中,默认为false。 然后,每次用户读取通知时,都将此值更改为true

然后像这样计算新的注释
db.posts.count({'comments.read':false})


然后我不知道在
cron任务
设置间隔
之间的最佳选择我想有两种方法来计算新评论

第一名:

在用户模式中存储密钥
lastVisit
。 然后执行类似于
db.posts.count的操作({'comments.created':{$gte:$$$$您的上次访问$$$})

注释。创建的
必须成为日期

秒:

将键
存储为:boolean
在注释中,默认为false。 然后,每次用户读取通知时,都将此值更改为true

然后像这样计算新的注释
db.posts.count({'comments.read':false})


然后我不知道在
cron任务
setInterval

之间的最佳选择如果我添加了键
lastvisit
日期,那么它是如何识别当时有多少评论被看到的。因为我在添加评论时维护总评论。每次它都会在你的帖子上发送12条新评论
然后,如果添加了两条新评论,则与我之前访问的
12条新评论一样
14条新评论
,应该是
2条新评论
完成了,这将帮助您:)我了解您的解决方案。对于每个用户,我都必须运行
cron作业
,然后检查
注释。阅读
,然后发送推送通知,这并不昂贵。有没有灵活的解决方案?did
socket
会降低性能MO socket是最好的方法!(这就是我所做的)。顺便说一句,您不需要每个用户都有一个cron作业。只有一项工作要做。你能在
socket
中分享这样的东西吗?仅仅是为了获得一个想法,所以我重建了我的架构如果我添加了键
lastvisit
日期,那么它如何识别当时有多少评论被看到。因为我在添加评论时保留了总的评论。每次它都像
12个新的一样发送在你的帖子上发表评论
然后如果添加了两条新评论,那么
14条新评论
与我之前访问的
12条新评论
应该是
2条新评论
完成了,这将帮助您:)我了解您的解决方案。对于每个用户,我都必须运行
cron作业
,然后检查
注释。阅读
,然后发送推送通知,这并不昂贵。有没有灵活的解决方案?did
socket
会降低性能MO socket是最好的方法!(这就是我所做的)。顺便说一句,您不需要每个用户都有一个cron作业。只需一项工作就可以完成所有工作。你能在
socket
中分享类似的内容吗?这样我就可以重新构建我的体系结构了