【问题标题】:Track of new inserted document and execute specific event跟踪新插入的文档并执行特定事件
【发布时间】:2017-02-13 13:24:13
【问题描述】:

当用户对帖子发表评论时,我有一个post 的集合,它将保存在名为comments 的嵌入式文档中。现在的问题是我必须在每个2 hours 发送推送通知,例如此You have 12 new comments on this post 用于此帖子的owner

现在点击推送通知后,它会将我重定向到 seen 这些 cmets 之后的那个 cmets。现在如果一个新的 cmets 反对帖子,那么 2 小时后我会变成这样 You have 3 new comments on this post

您可以在我的架构中看到我将维护 total_comments 字段。问题是我如何管理此 push notification time based 以及如何识别和维护新 cmets 的跟踪记录。我是否应该在架构中添加一些 key 并编写cron jobs 发送推送通知

任何帮助将不胜感激

这是我的记录

{
 "_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 
}

【问题讨论】:

    标签: javascript node.js mongodb push-notification scheduled-tasks


    【解决方案1】:

    我猜有两种计算新 cmets 的方法。

    第一:

    在您的用户架构中存储一个密钥 lastVisit。 然后做类似db.posts.count({'comments.created': { $gte: $$$YOUR lastVisit$$$ }});

    comments.created 必须成为日期。

    第二:

    在 cmets 中存储密钥 read: boolean,默认为 false。 然后每次用户阅读通知时将此值更改为 true。

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

    那么我不知道cron tasksetInterval 之间的最佳选择

    【讨论】:

    • 如果我添加了密钥 lastvisit 日期,那么它如何识别当时看到了多少 cmets。因为我在添加评论时维护 total_cmets。每次发送时都像 @ 987654329@ 然后如果两个新添加然后14 new comments 之前我访问过12 new comments 它应该是2 new comments
    • 希望,这对你有帮助:)
    • 我了解您的解决方案。对于每个用户我都必须运行cron jobs 然后检查comments.read 然后发送推送通知,这并不昂贵?是否有任何灵活的解决方案可用? socket 会降低性能吗
    • Imo 套接字是最好的方法! (这就是我所做的)。顺便说一句,您不需要为每个用户执行 cron 作业。只需一项工作即可完成所有工作。
    • 你能在socket 分享这样的东西吗?只是为了得到一个想法,所以我重建了我的架构
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2012-05-04
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多