【问题标题】:Sorting algorithm is activated only after refresh排序算法仅在刷新后激活
【发布时间】:2017-05-05 16:06:50
【问题描述】:

我的代码对我的收藏进行排序,但如果我让管理员更改某人的排名,则更改只会在刷新后激活。我很困惑为什么以及如何解决这个问题,任何帮助都会很棒!

Meteor.publish("sortingAlgo", function(){
    return og.find({},{ sort: {rank: 1,scores: 1}});
});

【问题讨论】:

    标签: mongodb reactjs meteor


    【解决方案1】:

    确保您在订阅后也在客户端上进行排序。在出版物中,sortlimit 结合使用时最有用。

    【讨论】:

    • 嘿,感谢您的快速回复,我在客户端上尝试了此代码: const handle = Meteor.subscribe('sortingAlgo'); Tracker.autorun(() => { const isReady = handle.ready(); console.log(Handle is ${isReady ? 'ready' : 'not ready'}); if(isReady){ return og.find({},{ sort: {rank: 1,scores: 1}}); } });它没有改变
    • 这真的应该工作 - 你如何呈现结果?反应?大火?
    • 是的,我正在使用 React。因此,我等待集合在渲染开始时加载,然后按上述方式输入该代码
    • 你遵循什么模式来让你的组件反应?反应作曲家?其他?
    • 啊,我认为我从来没有真正使用过,我只是认为通过使用流星,它使用网络套接字,这样它就可以为我做这一切,我的错。所以代码对其进行了排序,但只有在刷新之后,我是否需要 react-komposer 才能在我在管理员中进行更改后自动更新?
    【解决方案2】:

    你的发布代码是对的。

    您还需要在客户端对值进行排序。因为每当您添加新文档时,它都会更新出版物。但是在客户端,您的值附加在您的 mini mongo 中。要解决此问题,您需要在使用它之前对客户端的数据进行排序。

    //订阅您的出版物。

    Template.name.helpers({
        'data: function() {
            return og.find({},{ sort: {rank: 1,scores: 1}});
        }
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 2014-05-08
      • 1970-01-01
      相关资源
      最近更新 更多