1

我正在学习流星并阅读todos示例:

$ curl https://install.meteor.com | sh
$ meteor create --example todos

todos/server/bootstrap.js第 50 行附近,有如下几行。

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.
  }
}

我想知道为什么我们需要确保时间戳是唯一的?流星/mongodb 需要它还是仅特定于应用程序?

4

1 回答 1

3

时间戳不是必需的或不必是唯一的,在这种情况下它的应用程序特定。

这里的用例只是让每个待办事项都有一个连续的时间戳,以便它以正确的顺序显示它,如在客户端 js 中可以看到的那样,最旧的在顶部,最新的在底部。

Template.todos.todos = function () {
  ...
  return Todos.find(sel, {sort: {timestamp: 1}});
};

服务器 js 使用为循环中的每个项目添加 1 微秒来模拟可能与实际用户一起放入的排序顺序。它只做一次来创建一个示例数据库。

如果没有排序顺序/顺序时间戳,待办事项将按记录排序_id,这将使它们的顺序充其量是随机的。原因是流星用于Meteor.uuid()生成_id随机且无顺序的字段。

于 2013-02-21T00:26:20.250 回答