不要对Meteor中的更新进行反应排序

Ala*_*agu 2 meteor

我有一个视觉显示的帖子列表.每个帖子按其投票排序.

Posts.find({}, {sort: {votes: -1, name: 1}})
Run Code Online (Sandbox Code Playgroud)

现在当用户点击帖子上的upvote时,我会做一个

Posts.update(id, {$inc: {votes: 1}});
Run Code Online (Sandbox Code Playgroud)

现在,由于按投票排序,项目在列表中向上/向下移动,用户将丢失上下文.他必须搜索它移动到的项目.

如何告诉meteor在更新时不移动项目?

我检查了Collections.update函数,它不支持 reactive: false

Aks*_*hat 5

你必须reactive:false在find方法中使用它(它将数据传递给把手).

Posts.find({}, {sort: {votes: -1, name: 1}, reactive: false}});
Run Code Online (Sandbox Code Playgroud)

这样它就不会监听更新(插入/更新/移动/删除)

如果您需要对其进行自定义以使其仅用于更新操作:

对于初学者,您需要删除autopublish包.

您还需要手动订阅您的集合并从服务器发布它们.在各方例子说明如何做到这一点相当不错.

然后,您需要编写自定义发布函数并更改changed:函数,以便在投票更改时不会将任何数据发送到客户端.请注意,用户在刷新页面之前不会看到更新的投票数