我正在使用Meteor,我有一个项目列表,如:
Todo A
Todo B
Todo C
Todo D
然后一个接一个地调用多个更新之后:
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');
})
})
Todo A
Todo D
Todo C
Todo 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")
答案 0 :(得分:2)
根据我们上面的对话,看起来问题与几个文档对createdAt
具有相同值的事实有关。因此,仅对该字段进行排序将导致任意排序。如果文档是从脚本生成的,您可以尝试随机化日期。此外,您可以对多个字段进行排序,例如:{sort: {createdAt: 1, message: 1}}
。