2014-12-02 79 views
0

我们正在风帆0.10.5上构建一个实时webapp。我们有很多模型通过关联链接。例如,我们有一个用户模型和一个帖子模型,其中帖子总是有一个用户。风帆发布(更新)系统不会传播到协会

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

然而,每当websocket客户端正在观看用户模型(watchsubscribe d到所有用户)和Post模型(watch)。并且一个新的Post被创建(例如通过另一个套接字),我们的客户端仅接收Post的新事件,同时用户也改变了(间接通过关联)。

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

回答

0

我不确定这是否是最好的方法,但做的工作: 基本上,任何时候你更新一篇文章,你可以发布用户“更新”事件。

// Post.js 
module.exports = { 

    attributes: { 
    title: 'string', 
    owner:{ 
     model:'user' 
    } 
    }, 

    afterUpdate: function(post, cb){ 

    User.publishUpdate(post.owner, {/* props you want to send */}); 
    cb(); 

    } 
}; 
+0

惊人的解决方案,谢谢! – askmike 2014-12-04 16:52:17

+0

大量的开销:如果关系是一对多或多对多,这将会发布很多更新,其中大部分都是错误的,所以没有办法在sails中查看发生了什么变化。 更好的解决方案是使用(没有很好记录)的addedTo和removedFrom事件,请注意,您只能使用那些用于更改的关联,而不能更改关联数据。 – askmike 2014-12-15 17:11:20