Как видно из заголовка, у меня возникают проблемы с методом сохранения мангуста, который терпит неудачу, но не вызывает ошибки.Сохранение mongoose без ошибок
Я действительно знаю, почему он терпит неудачу, что до поля userId помечено как необходимо, но не предоставляется ... но я не знаю, почему он не выдает ошибку. Я исчерпал google и 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);
});
}
EDIT - Для уточнения обратного вызова вызывается, возьмите следующий код, например.
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
Похоже, [что здесь произошло] (http://stackoverflow.com/questions/10156623/mongoose-js-instance-save-callback-not-firing). – robertklep
Спасибо, robert, но callback определенно вызывается, я отлаживаю и выводит на вход консоль. Я уточню вопрос, чтобы уточнить. –
Вы протестировали, если 'err' на самом деле не установлен, используя что-то вроде' if (err) console.log (err) '? Кроме того, вы должны прекратить обработку остальной части кода после вызова 'handleError()' (общий метод для этого - это что-то вроде 'if (err) return handleError (...)') – robertklep