在已经加载|之后订阅另一个出版物反应-流星

时间:2016-08-24 21:58:29

标签: javascript meteor reactjs subscriptions

所以我有2个出版物, teams.dashboard boards.board ,事情是,一旦Boards字段已经从 teams.dashboard加载发布我希望从我拥有的第一个主板上加载 boardId boards.board ,例如:Boards.find()。fetch()[ 0] ._ ID。

一旦道具准备就绪,是否有任何React回调或Meteor方式订阅?因为某些原因我订阅了 componentDidUpdate 中的数据,其中有几个'ifs'和websocket返回:

[{\"msg\":\"sub\",\"id\":\"R74JgCvWX8B8uphoZ\",\"name\":\"boards.board\",\"params\":[\"F4MuZ2jX8YKcf8fMr\"]}"]

但下一条消息是:

["{\"msg\":\"unsub\",\"id\":\"R74JgCvWX8B8uphoZ\"}"]

出于某种原因,该出版物自动取消订阅...... 随后,有两个websocket消息,说明如下

[{\"msg\":\"changed\",\"collection\":\"Boards\",\"id\":\"F4MuZ2jX8YKcf8fMr\",\"fields\":{\"field1\":false,\"field2\":[],\"field3\":false,\"field4\":[],\"field5\":[]}}"]
[{\"msg\":\"changed\",\"collection\":\"Boards\",\"id\":\"F4MuZ2jX8YKcf8fMr\",\"cleared\":[\"field1\",\"field2\",\"field3\",\"field4\",\"field5\"]}"]

1 个答案:

答案 0 :(得分:1)

您可以使用Meteor.subscribe方法的回调参数来创建另一个订阅。

Meteor.subscribe('teams.dashboard', () => {
    let firstBoard = Boards.findOne({}, {fields: {}});
    if (!firstBoard) {
        return;
    }

    Meteor.subscribe('boards.board', firstBoard._id);
}

当然,您必须管理您的订阅。如果你能自动取消订阅像Blaze那样的React组件,我就不熟悉了。