Я хотел обновить вложенный объект, который является Схемой типа Карты. С кодом ниже, это ничего не меняет. Я пытался использовать set (), update (), finedOneAndUpdate (). но ни один из них не работал. Я действительно ценю, что люди помогают мне.
Схема:
const ColumnSchema = new Schema(
{
title: { type: String },
tasks: { type: Map, of: TaskSchema } <- I want to update this
taskOrder: [{ type: mongoose.Schema.Types.ObjectId, ref: TaskSchema }] <- I want to update this
}
);
const DashBoardSchema = new Schema(
{
user: { type: mongoose.Schema.Types.ObjectId, ref: User },
dashBoardTitle: String,
columns: { type: Map, of: ColumnSchema },
columnOrder: [{ type: mongoose.Schema.Types.ObjectId, ref: ColumnSchema }]
}
Это код, который я написал для этого
let newTasks = {};
let Board = await DashBoard.findOne({ _id: dashBoardId });
let Column = await Board.columns.get(columnId);
for (const key of Column.tasks.keys()) {
// Prints "github", "twitter", "instagram"
let item = Column.tasks.get(key);
newTasks[item.id] = item;
}
// console.log("newTask", newTask);
newTasks = {
...newTasks,
[newTask._id]: newTask
};
const danshBoard = DashBoard.findOneAndUpdate(
{ _id: dashBoardId, columns: columnId },
{ $set: { tasks: newTasks }, $push: { taskOrder: newTask._id } },
{ new: true },
(err, data) => {
if (err) console.log(err);
res.send(data);
}
);
} catch (err) {
console.log(err);
}
Пример данных здесь
enter code here
{
"columnOrder": [
"5e51860c45c55708cb441595"
],
"_id": "5e51860c45c55708cb441596",
"dashBoardTitle": "a",
"columns": {
"5e51860c45c55708cb441595": {
"taskOrder": [],
"_id": "5e51860c45c55708cb441595",
"title": "Second column",
"tasks": {}
}
},
"__v": 0
}