正如标题所示,我遇到了mongoose save方法的问题,这种方法失败但不会产生错误.
我实际上知道它为什么失败,这是由于userId字段被标记为必需但没有提供...但我不知道它为什么不抛出错误.我已经筋疲力尽了谷歌和stackoverflow看着类似的建议没有运气,所以把它打开给任何可以帮助我的人!
这是代码......
Model.js var mongoose = require('mongoose'); var TimeSchema = new mongoose.Schema({ client: String, matter: String, activity: String, tags: String, description: String, comments: [String], startTime: Date, startTimeUTC: Number, endTime: Date, endTimeUTC: Number, duration: Number, durationRnd: Number, durationUnits: Number, billable: Boolean, rate: Number, total: Number, user: String, userId: { type: mongoose.Schema.ObjectId, required: true } }, {safe: true}); mongoose.model("Time", TimeSchema); Controller.js exports.addTime = function (req, res) { console.log('Adding time: ' + JSON.stringify(req.body)); var time = new Time(req.body); time.save(function (err) { if (err) { res.send({'error' : err}); } res.send(time); }); }
编辑 - 为了澄清正在调用的回调,请以下面的代码为例.
exports.addTime = function (req, res) { console.log('Adding time: ' + JSON.stringify(req.body)); var time = new Time(req.body); console.log("time = " + time); // TODO user time.save(function (err) { if (err) { handleError(res, err); } console.log("ok"); Time.findById(time._id, function (err, found) { console.log("found = " + found); }); res.send(time); });
}
这是控制台输出
Adding time: {"description":"test","client":"","matter":"","activity":"","rate": "","startTime":"2013-11-30T19:58:43.000Z","startTimeUTC":"1385841523000","endTim e":"2013-11-30T19:58:45.000Z","endTimeUTC":"1385841525000","startLocale":"19:58" ,"startTimeLocale":"19:58:43","endLocale":"19:58","endTimeLocale":"19:58:45"} time = { description: 'test', client: '', matter: '', activity: '', rate: null, startTime: Sat Nov 30 2013 19:58:43 GMT+0000 (GMT Standard Time), startTimeUTC: 1385841523000, endTime: Sat Nov 30 2013 19:58:45 GMT+0000 (GMT Standard Time), endTimeUTC: 1385841525000, startTimeLocale: '19:58:43', endTimeLocale: '19:58:45', _id: 529a43750a366b6419000001, comments: [] } ok POST /api/times 200 14ms - 313b found = null
Ali.. 6
通过天真地不连接到数据库很可能遇到此错误.已经好几次发生在我身上.确保你mongoose.connect()
的到位.
问题解决了,感谢robertkelp.
这是我的修改后的代码,如果有任何帮助,但似乎错误被抛出我只是没有正确处理它.
exports.addTime = function (req, res) { console.log('Adding time: ' + JSON.stringify(req.body)); var time = new Time(req.body); time.save(function (err) { if (err) { handleError(res, err); } else { res.send(time); } }); }
通过天真地不连接到数据库很可能遇到此错误.已经好几次发生在我身上.确保你mongoose.connect()
的到位.