【发布时间】:2016-04-06 21:39:02
【问题描述】:
我正在使用 Meteor,我有一个项目列表,例如:
待办事项
待办事项 B
待办事项
待办事项
但是在一个接一个地调用多个更新之后:
Todos.find().forEach(function(todo) {
Todos.update(todo._id, {$set: {
strength:s,
retention:r,
}},
function(err, res){
if(err){throw err}
console.log('updated '+res+' doc');
})
})
待办事项
待办事项
待办事项
待办事项 B
列表顺序变得混乱。如果我再次刷新它很好并相应地排序。为什么会这样?
Template.listsShow.helpers({
editing: function() {
return Session.get(EDITING_KEY);
},
todosReady: function() {
return Router.current().todosHandle.ready();
},
todos: function(listId) {
var obj = Todos.find({listId: listId}, {sort: {createdAt : 1}});
return obj;
}
});
//Server Side
Meteor.publish('todos', function(listId) {
check(listId, String);
return Todos.find({listId: listId});
});
{
"_id" : "6pELT5pmGoXQhh2eG",
"createdAt" : ISODate("2016-01-02T23:58:12.236Z")
}
{
"_id" : "4ES3hbJX76nLCJGGL",
"createdAt" : ISODate("2016-01-02T23:58:12.236Z")
}
{
"_id" : "NzModCoCHcbWdWo22",
"createdAt" : ISODate("2016-01-02T23:58:12.236Z")
}
{
"_id" : "tzgK3EdMrBi8SbGBn",
"createdAt" : ISODate("2016-01-02T23:58:12.236Z")
【问题讨论】:
-
请包含您用于渲染 todo 文档的助手。你在那个助手中应用排序吗?
-
@DavidWeldon 是的,我相信是的,我在上面添加了它
-
这似乎非常接近我的问题stackoverflow.com/questions/28813567/…,但我不确定如何在帮助程序中实现 Tracker.autorun
-
createdAt是怎么写的?会不会是不小心添加了修改createdAt的update hook? -
是的,所以因为创建日期都是一样的,所以它们将被任意排序。也许试试
{sort: {createdAt: 1, message: 1}}或其他东西。