2017-04-27 12 views
0

MongoDBモデルにDate.nowと定義されている日付フィールドが含まれています。日付はすべてISO日付形式に変換されます。私は、現在の日付を渡す日付をddで保存して取得するMongoDBモデルのMMY yyyy形式

xDate : { 
    type: Date.now, 
    required: true 
} 

:モデル内部の日付は、次のように定義された日付は、MongoDBのスキーマ内のISO文字列として格納されているが

var d = new Date(); 
var temp = d.toISOString(); 
var subStr = temp.substr(10,temp.length - 1); 
var curDate = temp.replace(subStr, "T00:00:00.000Z"); 
console.log(curDate); 

。私は、次のクエリを使用してマングースを使用して、それを照会しよう:

X. 
find({ 
    xDate: curDate 
}) 
.exec(function(err, doc) { 
var response = { 
    status : 200, 
    message : doc 
}; 
if (err) { 
    console.log('Error'); 
    response.status = 500; 
    response.message = err; 
} else if (!doc) { 
    console.log("Documents against the date not found in database" ,curDate); 
    response.status = 404; 
    response.message = { 
    "message" : "Documents not found for " + curDate 
    }; 
} 
res 
.status(response.status) 
.json(response.message); 
}); 

私はそこにいるデータの空白JSON配列のinspiteを取得しておきます。テーブル内では、xDateはYYYY-MM-DD形式で格納されます。

答えて

0

mongo内の日付がISO文字列に格納されていません。モデルをDate.nowとして保存すると、ISO文字列ではなく、新しいDateオブジェクトが保存されます。クエリーの簡単な方法の1つは、new Date()オブジェクトによるクエリです。

また、データが保存されているのとまったく同じ日付を取得するのに苦労するため、クエリは真実ではありません。私はあなたのための良いオプションは$ltまたは$gtフィルタを使用していると思う。

新しいクエリは、次のようになります。

let currDate = new Date() 
// change the date using class methods 
X.find({ 
    xDate: {$lt: currDate} 
}).exec... 
+0

正確にあなたが「クラスメソッドを使用して日付を変更する」とはどういう意味ですか?また、 '$ lt:curDate'に余分なrを入れます。 –

+0

ネイティブDateオブジェクト(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)を使用して日付を変更し、Dateオブジェクトのメソッドを使用します。日付の変更に文字列置換メソッドを使用しないでください。 –

関連する問題