Mongoose:findOneAndUpdate()不返回

时间:2016-03-06 12:42:25

标签: javascript node.js mongodb mongoose

我无法理解为什么这个简单代码以一种非常奇怪的方式失败:在调用mongoose方法之后,我得不到任何消息,并且程序终止,而不对db执行任何操作。
这是代码:

var save = function(trace, callback) {
  console.log('saving...');
  Trace.findOneAndUpdate(
    { // query
      phone: trace.phone,
      link: trace.link,
    },
    { // object to save
      phone: trace.phone,
      title: trace.title,
    },
    { // options
      new: true, // return the modified document rather than the original
      upsert: true, // creates the object if it doesn't exist
      passRawResult: true // pass back mongo row result
    },
    function(err, doc, raw) { // result callback
      if (err) {
        console.log('can\'t save trace', trace.phone, trace.link, ':', err);
      } else {
        if (raw.lastErrorObject.updatedExisting) {
          console.log('trace', doc.phone, doc.link, 'updated');
        } else {
          console.log('trace', doc.phone, doc.link, 'added');
        }
        images.push(doc); // push added image
      }
      callback(err, doc); // finish image save
    }
  );
};

var trace = {
  phone: '3331234567',
  link: 'http://www.example.com/',
  title: 'title 1',
  description: 'descrption 1',
  dateOfLastSync: new Date(),
};

save(trace, function(err, doc) {
  if (err) {
    console.error('err:', err);
  }
  console.log('trace updated:', doc);
});

输出只是:

saving...

然后程序终止,而不添加或修改db上的任何数据。

这是模型,如果它可以帮助:

var trace = new mongoose.Schema({
  phone: { type: String, required: true },
  link: String,
  title: String,
  description: String,
  dateOfLastSync: { type: Date, default: Date.now },
});
trace.index({ link: 1 }, { unique: false });
trace.index({ phone: 1 }, { unique: false });
trace.index({ link: 1, phone: 1 }, { unique: true });

module.exports = mongoose.model('Trace', trace);

我确定我错过了一些明显的东西,但...... :-(
任何线索?

1 个答案:

答案 0 :(得分:0)

对不起,大家! 我刚刚发现了一个愚蠢的错误:我只是不包括“db.js”,我在其中执行了mongoose.connect(...)

我发布这个作为答案,所以更少的人会花时间处理这件事...... (虽然我不知道我没有错误的事实是好的......: - )

Sooooorry再次......