4

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 として保存する方法はありますか?

4

1 に答える 1

4

私にとっては、クライアント側からタイムスタンプを送信しません。代わりに、分岐Collection.allowの下に関数を介して挿入するときにドキュメントを変更します。auth

これを行うにはいくつかの利点があると思います-

  • クライアント側で日付フィールドを挿入する必要がないため、コードが節約されます。

  • タイムスタンプは、より正確なはずのクライアント側ではなく、サーバー時間に基づいています。

  • 最後に、フィールド値は文字列ではなく ISODate です。(ネイティブの日付型がサポートされていない JSON は嫌いです)

于 2012-08-22T01:24:03.860 に答える