2017-06-19 11 views
0

私はマングースに新しいです& mongodb。私はそれが悪いグーグルスキルであるかどうかわからないが、どうすればcreatedの日付を維持するのですか?私が同じ質問を送信すると、dbは新しい時間(同じcreated & updatedと同じ)を持つ質問文書の別のコピーを作成します。これはここではっきりしています。しかし、もちろん私はupdatedの日付を変更するだけです。どうしたの?mongoose `created` date ups on 'upsert'

var QuestionSchema = Schema({ 
    title   : String, 
    admin   : {type: String, ref: 'User'}, 
    created   : {type: Date}, 
    updated   : {type: Date} 
}); 

module.exports = mongoose.model('Question', QuestionSchema); 

api.js

  Question.findOneAndUpdate({ 
        title  : req.body.question, 
        admin  : req.body.employee, 
        created  : Date(), 
        udpated  : Date() 
       }, 
       req.body, 
       { 
        upsert: true 
       }) 
      .exec(function(err, question) { 
       console.log(req.body); 
      }); 
+0

[ '$ currentDate'](https://docs.mongodb.com/manual/reference/operator/update/currentDate/) 。また、ドキュメント全体を「上書き」するのではなく、基本的な「更新演算子」(https://docs.mongodb.com/manual/reference/operator/update/)を使用することを学ぶ必要があります。現在行っている。 –

答えて

0

クエリが正しくないように見えます。 以下の構文を使用する必要があります。

query.findOneAndUpdate(条件、更新、コールバック)あなたが欲しい

Question.findOneAndUpdate({ 
        title  : req.body.question, 
        admin  : req.body.employee 
          }, 
       { 
        udpated  : Date() 
       }, 
       req.body, 
       { 
        upsert: true 
       }) 
      .exec(function(err, question) { 
        console.log(req.body); 
      }); 
+0

.exec()にTypeErrorがあります。 >>> undefinedのプロパティ 'exec'は読み取れません。 –