【问题标题】:Sails publish(Update) system does not propagate to associationsSails 发布(更新)系统不会传播到关联
【发布时间】:2014-12-02 16:44:55
【问题描述】:

我们正在sails 0.10.5 上构建一个实时网络应用程序。我们有很多通过关联链接的模型。例如,我们有一个 User 模型和一个 Post 模型,其中一个帖子总是有一个用户。

populate 确保在获取用户时,我们也会获取帖子。我们在sails 控制器中使用subscribewatch 模型方法告诉(websocket)客户端有关更新的信息。

但是,只要 websocket 客户端同时监视用户模型(watchsubscribed 对所有用户)和帖子模型(watch)。并且创建了一个新的 Post(例如通过另一个套接字),我们的客户端只收到一个 Post 的新事件,而用户也发生了变化(间接通过关联)。

我们如何确保我们的客户也能获得这些更新?基本上,我们需要一种方法将任何填充模型的结果同步到我们的客户。

【问题讨论】:

    标签: websocket associations sails.js


    【解决方案1】:

    我不确定这是否是最好的方法,但确实有效: 基本上,只要您更新帖子,您就可以发布用户“更新”事件。

    // Post.js
    module.exports = {
    
      attributes: {
        title: 'string',
        owner:{
            model:'user'
        }
      },
    
      afterUpdate: function(post, cb){
    
        User.publishUpdate(post.owner, {/* props you want to send */});
        cb();
    
      }
    };
    

    【讨论】:

    • 很多开销:在sails 中无法查看发生了什么变化,如果关系是一对多或多对多,这将发布很多更新,大部分这是错误的。更好的解决方案是使用(没有很好记录的) addedTo 和 removedFrom 事件,请注意,您只能将它们用于更改的关联,而不是更改关联数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多