반응형
Mongoose save()가 데이터베이스 문서의 배열 값을 업데이트하지 않습니다.
GUI를 사용하여 컬렉션(단위)의 문서를 업데이트하려고 하는데 업데이트된 후 값(사용자)을 업데이트하려고 합니다.집합(사용자)의 단위 이름 배열입니다.배열 길이가 1개의 요소만 있으면 업데이트되고 데이터베이스에도 표시되며 모든 것이 제대로 작동하지만, 단위 배열에 두 개 이상의 요소가 있을 때 for 루프를 통해 업데이트하려고 하면 업데이트된 것으로 표시되지만 데이터베이스를 확인할 때는 여전히 업데이트되지 않습니다.
루프를 통해 값을 업데이트할 때 데이터베이스를 업데이트하지 않는 이유를 알 수 없습니다.
전체 편집 및 업데이트 기능:-
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.본문:-
{ name: 'Icon',
value: 'Health Utility 22c',
pk: '5395ed107cd92dc40eaafb56'
}
사용자 스키마:-
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 });
mongooose에게 데이터 세트가 다음과 같이 변경되었음을 알립니다.
doc.markModified('pathToYourAttribute')
문서 http://mongoosejs.com/docs/schematypes.html 에서.
person.anything = { x: [3, 4, { y: "changed" }] };
person.markModified('anything');
도움이 되길 바랍니다!
이 문제를 참조하십시오.이 문제를 해결하는 한 가지 방법은 기존 어레이 인덱스 방법을 사용하여 어레이를 업데이트하지 않는 것입니다.그래서 이렇게 해요.
doc.array.set(index, value);
대신에
doc.array[index] = value;
저장 방법을 다음 문장으로 대체했습니다.
Client_data.Unit.updateOne({_id: unit._id},unit);
언급URL : https://stackoverflow.com/questions/24618584/mongoose-save-not-updating-value-in-an-array-in-database-document
반응형
'programing' 카테고리의 다른 글
iOS 7 반투명 UI 탐색 모음을 위한 밝고 선명한 색상 구현 (0) | 2023.05.23 |
---|---|
SqlDataAdapter입니다.주입 방법이 느림 (0) | 2023.05.23 |
특정 데이터 테이블의 행을 반복합니다. (0) | 2023.05.23 |
파이프를 사용하여 날짜를 dd/MM/yyyy로 형식 지정 (0) | 2023.05.23 |
이클립스로 GitHub 프로젝트 가져오기 (0) | 2023.05.18 |