我有一个视觉显示的帖子列表。每个帖子按其投票排序。
Posts.find({}, {sort: {votes: -1, name: 1}})
现在,当用户点击帖子上的upvote时,我会做
Posts.update(id, {$inc: {votes: 1}});
现在,由于它按投票排序,因此项目在列表中向上/向下移动,用户将丢失上下文。他必须搜索它移动到的项目。
如何告诉meteor在更新时不移动项目?
我检查了Collections.update函数,它不支持reactive: false
答案 0 :(得分:5)
你必须在find方法中使用reactive:false
(它将数据传递给把手)。
Posts.find({}, {sort: {votes: -1, name: 1}, reactive: false}});
这样它就不会监听更新(插入/更新/移动/删除)
如果您需要对其进行自定义以使其仅用于更新操作:
对于初学者,您需要删除autopublish
包。
您还需要手动订阅集合并从服务器发布它们。 parties example显示了如何做得很好。
然后,您需要编写自定义发布函数并更改changed:
函数,以便在投票更改时不会向客户端发送任何数据。请注意,用户在刷新页面之前不会看到更新的投票数