所以我有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\"]}"]
答案 0 :(得分:1)
您可以使用Meteor.subscribe
方法的回调参数来创建另一个订阅。
Meteor.subscribe('teams.dashboard', () => {
let firstBoard = Boards.findOne({}, {fields: {}});
if (!firstBoard) {
return;
}
Meteor.subscribe('boards.board', firstBoard._id);
}
当然,您必须管理您的订阅。如果你能自动取消订阅像Blaze那样的React组件,我就不熟悉了。