2013-02-21 3 views
1

Я учусь meteor и читать 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 или просто для приложения?

ответ

3

Временная метка не требуется или не обязательно должна быть уникальной, ее применение в данном случае является конкретным.

Этот пример используется только для того, чтобы каждый объект todo имел последовательную временную метку, чтобы отобразить ее в правильном порядке, как это видно на клиенте js, старейшем сверху и новее внизу.

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

на сервер использует добавляет расслоение плотной 1 микросекунду для каждого элемента в петле, чтобы симулировать порядок сортировки, который, возможно, будет положить в с с реальным пользователем. Его только один раз сделать, чтобы создать примерную базу данных.

Если не было порядка сортировки/временных меток, тодозы будут сортироваться по записям _id, что сделало бы их заказ в лучшем случае случайным. Причиной этого является метеорит, использующий Meteor.uuid() для генерации своих полей _id, которые являются случайными & без последовательности.

Смежные вопросы