客户端集合中的流星插入日期或时间戳

时间:2012-08-21 18:57:16

标签: json mongodb date meteor isodate

我原本期望具有Date属性的对象将作为ISODate从客户端或服务器端保存在Mongo中,但事实并非如此。

当我这样做时

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() });
}

在mongo中它会像这样保存

{_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?

1 个答案:

答案 0 :(得分:4)

对我来说,我不会从客户端发送时间戳。相反,我在Collection.allow分支下通过auth函数插入时修改了文档。

我认为这样做有几个好处 -

  • 客户端不需要插入日期字段,这样可以保存代码。

  • 时间戳基于服务器时间,而不是客户端, 这应该更准确。

  • 最后,字段值是ISODate,而不是字符串。 (讨厌 不支持本机日期类型的JSON)