Próbuję zaktualizować dokument w kolekcji (jednostki) przy użyciu interfejsu GUI, a po aktualizacji jest aktualizowany Chcę zaktualizować wartość (user.Units, który jest tablicą nazw jednostek) w kolekcji (użytkownicy). Jeśli długość tablicy to tylko 1 element, to jest ona aktualizowana, a także pojawia się w bazie danych i wszystko działa dobrze, ale kiedy Tablica Jednostek ma więcej niż jeden element, próbuję zaktualizować ją za pomocą pętli for, pokazuje, że jest aktualizowana, ale kiedy Sprawdzam bazę danych, która wciąż nie jest aktualizowana.Zapisywanie Mongoose() nie aktualizowanie wartości w tablicy w dokumencie bazy danych
Naprawdę nie mogę zrozumieć, dlaczego nie aktualizuje bazy danych, gdy aktualizuję wartość przez pętlę.
Cały Edycja i zmiana funkcji: -
edit_unit: function (req, res, next) {
var Data = req.body;
Client_data.Unit.findById(req.params.unitId, function (err, unit) {
var error = false;
if (err) {
error = err;
} else if (!unit) {
error = "FATAL: unable to look up Unit #" + req.params.unitId;
} else {
switch(req.body.name) {
case 'Icon':
var Icon = unit.Icon;
User.find({"Units":Icon}, function (err, users) {
if (err)
console.log(err);
users.forEach(function (u) {
if (u.Units.length > 1) {
for (var i = 0; i <= u.Units.length; i++) {
if(u.Units[i] == Icon) {
u.Units[i] = req.body.value;
}
}
}
else {
u.Units = req.body.value;
}
u.save(u);
});
});
unit[req.body.name] = req.body.value;
break;
case 'Description':
unit[req.body.name] = req.body.value;
break;
default:
unit[req.body.name] = req.body.value;
break;
}
var data = JSON.stringify(req.body);
unit.save();
res.writeHead(200, {
'Content-Length': data.length,
'Content-Type': 'application/json'
});
res.end(data);
}
});
}
req.body: -
{ name: 'Icon',
value: 'Health Utility 22c',
pk: '5395ed107cd92dc40eaafb56'
}
Schema użytkownika: -
var userSchema = mongoose.Schema({
UserName: { type: String, required: true },
Password: { type: String },
FirstName: { type: String, required: true },
LastName: { type: String, required: true },
CompanyName: { type: String },
PhoneNumber: { type: Number },
StartDate: { type: Date, required: true },
EndDate: { type: Date, required: true, default: new Date('9999-12-12') },
ClientID: { type: ObjectId, ref: 'Client', default: null },
DepartmentID: { type: ObjectId, ref: 'Department' },
ManagerID: { type: ObjectId, ref: 'User', default: null},
Units: [ { type: String, required: true } ],
UserList: { type: Array, default:[]},
Access: [{ type: String, enum: ['DEMO', 'USER','MANAGER','ADMINISTRATOR','OWNER']}],
Credentials: { type: String },
AFTE: { type: Number},
SessionID: { type: String, default: null }
}, { safe: true });
Czy możesz edytować pytanie, dołączając definicję schematu dla "użytkownika"? – JohnnyHK