2012-08-21 2 views
4

Я ожидал, что объект с свойством Date будет сохранен в Mongo как ISODate с клиентской или серверной стороны, но это не так.Дата или отметка даты Метеор в коллекции клиента

Когда я

if (Meteor.is_client()){ 
    Collection.insert({text : "Client", number : 1, date : new Date() }); 
    Collection.insert({text : "Client", number : 2, date : (new Date()).getTime() }); 
} 
else { 
    Collection.insert({text : "Server", number : 1, date : new Date() }); 
} 

В Монго экономит как так

{_id : "xx-xx-xx-xx-xx", text : "Client", number : 1, date : "2012-08-21T18:40:47.446" } 
{_id : "xx-xx-xx-xx-xx", text : "Client", number : 2, date : 1345574805367 } 
{_id : "xx-xx-xx-xx-xx", text : "Server", number : 1, date : ISODate(2012-08-21T18:40:47.446) 

Есть ли способ сохранить объект со свойством Date со стороны клиента как ISODate?

+0

Я считаю это как ошибка в метеора или, возможно, другой компонент, который Meteor использует. Забыли о проблеме: https://github.com/meteor/meteor/issues/603 –

ответ

4

Для меня я не отправляю временные метки с клиентской стороны. Вместо этого я изменяю документ при вставке через Collection.allow в раздел auth.

Я думаю, что вы несколько преимуществ, чтобы сделать это -

  • стороне клиента не нужно вставить поле даты, который сохраняет код.

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

  • И последнее значение поля - это ISODate, а не строка. (Ненависть JSON без нативного типа даты поддерживается)

+0

Да, все причины, которые вы дали, верны, я реализовал на сервере крючок, поэтому каждый раз, когда возникает запрос на вставку или обновление эти коллекции добавляются в объект date_created и date_modified. Но в этом случае я хотел реализовать клиентскую сторону. –

+1

Вам будет лучше использовать deny, поскольку он всегда запускается. Там может быть несколько разрешенных обратных вызовов, и если кто-то возвращает true, другой разрешает обратные вызовы, что означает, что ваш код может начать таинственно пропущен. В любом случае использование deny - это немного хак, и лучшее решение будет доступно: https://github.com/meteor/meteor/issues/575 –

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