我无法理解为什么这个简单代码以一种非常奇怪的方式失败:在调用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);
我确定我错过了一些明显的东西,但...... :-(
任何线索?
答案 0 :(得分:0)
对不起,大家!
我刚刚发现了一个愚蠢的错误:我只是不包括“db.js”,我在其中执行了mongoose.connect(...)
。
我发布这个作为答案,所以更少的人会花时间处理这件事...... (虽然我不知道我没有错误的事实是好的......: - )
Sooooorry再次......