订阅另一个已经加载的出版物| React-Meteor

Subscribe to another publication after one has already loaded | React-Meteor

本文关键字:出版物 React-Meteor 加载 另一个      更新时间:2023-09-26

所以我有两个出版物,团队。dashboard板。board,问题是,一旦Boards字段已经从团队加载。我想加载板。board出版物与boardId从第一个董事会我有,例如:Boards.find().fetch()[0]._id。

是否有任何React回调或流星的方式来订阅,一旦道具准备好了?因为出于某种原因,我订阅了componentDidUpdate中的数据,有几个'if '和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'"]}"]

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

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

当然,你必须管理你的订阅。我不太清楚React组件是否能像Blaze那样自动退订