2017-08-11 8 views
-1

私は以下の設定をしています。findOne with Mongoose/MongoDBが行を返さない

me =はリクエストからの受信データですが、この例では使用されていないため、情報をスキップしています。

私がしようとしているfindAndUpdateを追加しました。更新の代わりにfindAndUpdateに挿入が行われるのはなぜですか?

app.js

mongoose.connect("mongodb://localhost/time_report"); 

var reportSchema = new mongoose.Schema({ 
    name: String, 
    month: String, 
    date: String, 
    hours: Number, 
    dayNumber: Number, 
    day: String 
}); 
var time = mongoose.model("time", reportSchema); 

クエリ:

app.get("/test", function(req, res) { 
var me = new time({ 
      name: info[i + 3], 
      month: info[i + 1], 
      date: info[i + 2], 
      hours: info[i], 
      dayNumber: info[i + 4], 
      day: info[i + 5] 
     }); 

    time.findOneAndUpdate(query, update, options, function(err, data) { 
     if (err) { 
      console.log(err); 
     } 
     console.log("data: " + data); 

     found = true; 
    }); 

}

..... MongoDBのより多くのものとリスナー

{ "_id" : ObjectId("598d71b20f47692f48eb7393"), "name" : "jocke", "month" : "2017-08", "date" : "2017-08-01", "hours" : 8, "dayNumber" : 2, "day" : "Tuesday", "__v" : 0 } 

マングースデバッグ:

[0;36mMongoose: times.findAndModify({ date: '2017-08-31' }, [], { '$set': { hours: null } }, { new: false, upsert: false, fields: {} }) 
[0;36mMongoose: times.insert({ name: '', month: '2017-08', date: '2017-08-31', hours: null, dayNumber: 4, day: 'Thursday', _id: ObjectId("598d7ef69386343b3035192f"), __v: 0 }) 
+0

* '場合意味*「このシナリオで実行することはありませんにconsole.log。」 (err) 'が真を返す。だからエラーは何ですか? –

+1

なぜ要素を見つけるためにnewを使用してインスタンスを作成していますか –

+0

nogがヒットして以来、ただスキップするエラーはありません。新しいインスタンスは、あなたが何かを見つけられない時のためのものです。その後、新しいオブジェクトとして保存されます – user2130951

答えて

0

あなただけのコードの下に使用してエクスポートされたマングースのモデルを持っている場合は

var time = require('./models/time'); 

app.get('/test', function(req, res){ 
    // change the search object as per your need like month=2018/07 
    time.findOne(req.body, function(err, doc){ 
    if(err) return handleError(err); 
    res.send(doc) 
    }) 

}) 
関連する問題