У меня есть node.js api, который обновляет поддокумент. Ниже приводится запись вызов для поддокумента:Как устранить проблему сохранения объекта mongoose?
.put(function(req, res) {
member.findById(req.params.member_id, function(err, member) {
if (err)
res.send(err);
console.log("old: " + member);
member.address[req.params.address_id].address_type = req.body.address_type;
member.address[req.params.address_id].street1 = req.body.street1;
member.address[req.params.address_id].street2 = req.body.street2;
member.address[req.params.address_id].City = req.body.City;
member.address[req.params.address_id].State = req.body.State;
member.address[req.params.address_id].Zip = req.body.Zip;
member.address[req.params.address_id].Lat = req.body.Lat;
member.address[req.params.address_id].Lng = req.body.Lng;
console.log("new: " + member);
member.save(function(err) {
if (err)
res.send(err);
res.json({message:'Address Updated!!!'});
})
})
})
Две console.log линий доказывают, что объект был найден в вызове findById, обновляются после прохождения через массив. Журналы доказывают, что объект в памяти фактически обновлен.
Однако при действии вызова .save()
я получаю сообщение об успешном завершении, но ничего не меняется в mongodb.
У меня нет ошибок, никаких предупреждений, ничего. Это говорит о успехе, но никаких изменений. Как устранить неполадки?
вот мой адрес Модель:
var mongoose = require('mongoose'),
Schema = mongoose.Schema
var AddressSchema = Schema({
Address_type : String,
street1 : String,
street2 : String,
City : String,
State : String,
Zip : Number,
Lat : Number,
Lng : Number
});
module.exports = mongoose.model('Address', AddressSchema);
и вот родительская модель, член:
var mongoose = require('mongoose'),
Schema = mongoose.Schema
var Address = require('./address');
var Award = require('./award');
var MemberSchema = Schema({
FName : String,
LName : String,
address: [Address.Schema],
phone : {
type : String,
number : String
},
email: String,
gender: String,
DOB: Date,
rank : {
level : String,
updated: { type: Date, default: Date.now }
},
Awards : {
personal : Boolean,
award : [Award.Schema],
granted: { type: Date, default: Date.now }
}
});
module.exports = mongoose.model('Member', MemberSchema);
сделано. Большое спасибо. – arcee123
Является ли 'req.params.address_id' ObjectId или индексом элемента' address' для обновления? – JohnnyHK
FWIW, ваша обработка ошибок отключена: вы вызываете 'res.send (err)' в случае ошибок, но после этого ваша функция обратного вызова продолжает работать. Вам нужно вернуться из обратного вызова в этом случае: 'if (err) return res.send (err)'. – robertklep