Ich versuche ein Dokument in einer Sammlung (Einheiten) mit GUI zu aktualisieren und nachdem es aktualisiert wird Ich möchte den Wert (user.Units, die ein Array ist zu aktualisieren) von Unit-Namen) in der Sammlung (Benutzer). Wenn die Array-Länge nur 1 Element ist, wird es aktualisiert und erscheint auch in der Datenbank und alles funktioniert gut, aber wenn Array of Units mehr als ein Element haben, versuche ich es durch eine for-Schleife zu aktualisieren, es zeigt aber, wann es aktualisiert wird Ich überprüfe die Datenbank, die noch nicht aktualisiert wird.Mongoose save() Aktualisiere Wert in einem Array im Datenbankdokument
Ich kann wirklich nicht herausfinden, warum es die Datenbank nicht aktualisiert, wenn ich den Wert durch eine Schleife aktualisiere.
Ganze bearbeiten und Update-Funktion: -
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'
}
Benutzer Schema: -
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 });
Können Sie Ihre Frage bearbeiten, um die Schemadefinition für 'User' einzuschließen? – JohnnyHK