2017-02-01 6 views
1

誰かがそれを理解するのを助けてくれるのかと疑問に思っていました。曇り時々の日時による異常行動条件

クラウドビューの作成現在の日付のタイムスタンプを持つレコードのみを返したいとします。

私は仕事に苦労していましたが、違いはif条件の最後の前にスペースがあることです。

作業とCloudantドキュメントの日付に対して、現在の日付を確認するために

if (new Date(Date.parse(doc.details.timestamp)).setHours(0,0,0,0) === new Date().setHours(0,0,0,0)){ 

作品

を動作していないため、以下を参照してください

if (new Date(Date.parse(doc.details.timestamp)).setHours(0,0,0,0) === new Date().setHours(0,0,0,0)){ 

Cloudantドキュメントの日付に対する日付を確認するために動作しません

コンテキストの下での完全な作業ビュー

function (doc) { 
    if (doc.details.location){ 
    if (new Date(Date.parse(doc.details.timestamp)).setHours(0,0,0,0) === new Date().setHours(0,0,0,0)){ 
     emit(doc.details.location.toLowerCase(), { "location": doc.details.location.toLowerCase(), "status": doc.details.status, "user": doc.details.username, "time": doc.details.timestamp}) 
    } 
    } 
} 

すべて最高、

スコット。

答えて

3

これは、関係するスペースではなくifステートメントの実行日時と関係があると思われます。

map関数は、実行時間に関係なく決定的である必要があります。あなたはmap関数は、クエリ時に実行されていることを推測しているよう

それは(そうnew Dateは、今日の日付を発するだろう)を探します。代わりに、インデックス時に実行されるので、new Dateの値は、インデックス付けが行われる日時に関係なくです。インデクシングは文書の挿入とは別の時間に実行されるため(挿入とビューの問合せの間にある場合があります)、時間とともに変化する任意の形式の値を使用すると、予期しない結果が生じます。

私は疑問に思っています。スペースは同時に付随していて、代わりにnew Dateの出力が変更されています。

"今日"のことを質問すると、代わりに[location, year, month, day]のようなキーを出したいと思います。 JavaScriptが今日の場所Bristol、2 - 2月 - 2017年ですべての項目を照会するために、月の0ベースのインデックスを使用しているので、あなたがあなたの中にkey=["bristol",2017,1,2]を使用したい

function (doc) { 
    if (doc.details.location) { 
    var l = doc.details.location.toLowerCase(); 
    var d = Date.parse(doc.details.timestamp); 
    emit([l, d.getFullYear(), d.getMonth(), d.getDate()], { 
     "location": l, 
     "status": doc.details.status, 
     "user": doc.details.username, 
     "time": doc.details.timestamp 
    }); 
    } 
} 

:あなたのマップ機能は次のようになります。ビューに問い合わせます。

関連する問題