我正在学习meteor并阅读todos
示例:
$ curl https://install.meteor.com | sh
$ meteor create --example todos
在第50行的todos/server/bootstrap.js
中,有如下行。
var timestamp = (new Date()).getTime();
for (var i = 0; i < data.length; i++) {
var list_id = Lists.insert({name: data[i].name});
for (var j = 0; j < data[i].contents.length; j++) {
var info = data[i].contents[j];
Todos.insert({list_id: list_id,
text: info[0],
timestamp: timestamp,
tags: info.slice(1)});
timestamp += 1; // ensure unique timestamp.
}
}
我想知道为什么我们需要确保时间戳是唯一的?是meteor / mongodb还是只需要特定于应用程序?
答案 0 :(得分:3)
时间戳不是必需的,也不必是唯一的,在这种情况下它的应用是特定的。
这里的用例只是为了使每个待办事项都有一个顺序时间戳,以便它以正确的顺序显示它,如在客户端js中看到的那样,最旧的位于顶部,最新的位于底部。
Template.todos.todos = function () {
...
return Todos.find(sel, {sort: {timestamp: 1}});
};
服务器js使用为循环中的每个项添加1微秒来模拟可能与实际用户一起放置的排序顺序。它只创建一次示例数据库。
如果没有排序顺序/顺序时间戳,则todos将按记录_id
排序,这将使他们的顺序最佳,随机。原因是流星使用Meteor.uuid()
生成其_id
字段,这些字段是随机的&amp;没有顺序性。