1

私は流星を学び、例を読んでいtodosます:

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

50todos/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に必要ですか、それとも単にアプリケーション固有ですか?

4

1 に答える 1

3

タイムスタンプは必須ではないか、一意である必要はありません。この場合、そのアプリケーション固有です。

ここでの使用例は、各todoアイテムに連続したタイムスタンプがあり、クライアントjsで見られるように、一番上が最も古く、一番下が最も新しい正しい順序で表示されるようにするためのものです。

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

サーバーjsは、ループ内の各アイテムに1マイクロ秒を追加して、実際のユーザーが使用する可能性のある並べ替え順序をシミュレートします。サンプルデータベースを作成するために一度だけ実行されます。

ソート順/シーケンシャルタイムスタンプがない場合、todoはレコードによってソートされ、_idせいぜいランダムな順序になります。この理由は、meteorがランダムで連続性のないフィールドをMeteor.uuid()生成するために使用するためです。_id

于 2013-02-21T00:26:20.250 に答える