我在mongo数据库中存储了一个对象,其中包含嵌套的ObjectId数组以引用其他模式,例如:
{
type:'materials',
value:['5d8762f418eb8659f57f5b47','5d8762f418eb8659f57f5b48']
},
{
type:'sections',
value:['5d8762f418eb8659f57f5b49','5d8762f418eb8659f57f5b50']
},
如何对每个值执行最易读和可维护的操作,例如保存,编辑,删除。 它们是抽象规则,例如: 如果我在sections数组中删除5d8762f418eb8659f57f5b49,也应该在db中将其删除...
例如,我编写了以下示例代码来删除已删除的值,但是我认为mongodb数组运算符会更容易:
async function removedUnusedInDB(type, ExpectedSchema) {
const projects = await ProjectSchema.find({ _id: project._id }).exec();
const sendedProject = project[type].value;
const dbProject = projects[0][type].value;
const projectDifferences = dbProject.filter(o => !sendedProject.some(v => v._id.toString() === o.toString()))
projectDifferences.forEach(async (toRemoveElem) => {
await ExpectedSchema.remove({ _id: ObjectId(toRemoveElem._id) }, function (err) {
if (!err) {
console.log('removed linked value unused!');
}
else {
throw 'Cannot remove unfindable linked value'
}
});
})
}