Я пытаюсь удалить card
из текущего проекта пользователя. Каждая карта следует за CardSchema
.
Я создаю канбан-доску — это может быть полезно знать.
Однако мне не удалось удалить карту.
Структура моей базы данных для этого выглядит следующим образом:
"cards": [
{
"pending": {
"cardIDHere": {
// stuff here
}
},
"inprogress": {},
"completed": {}
}
]
// or
project
| - cards [Array]
| - 0 [Object]
| - pending [Object]
| - cardIDHere [Object]
| - inprogress [Object]
| - completed [Object]
Другими словами, чтобы добраться до карты нужно: cards.0.<panel-name>.<card-id>
.
panel-name
является родителем карты: pending
и т. д.
Мой код:
exports.updateCardPlace = async(req, res, next) => {
const parent = await Card.findOne({"id":req.body.id});
const path = `cards.0.${parent.panel}`;
try{
await Card.findOneAndDelete({"id": req.body.id});
res.status(204).json({
status: "Success"
})
} catch(err){
res.status(300).json({
status: "Error",
message: err.message
})
}
}
Обратите внимание, что req.body.id
— правильное значение, а parent.panel
— допустимое.
Тем не менее, я проверяю это один раз - запрос POST возвращается с кодом 204
. Ок, отлично. Однако отображается мое предупреждение об ошибке.
Так вот, перезагружаю - может, удалилось, как и должно было быть.
Нет, все еще там. Попробуем еще раз удалить карту.
Ах, на этот раз ошибка:
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'panel' of null
at exports.updateCardPlace
Я совершенно не понимаю, о чем идет речь, может ли кто-нибудь мне помочь?
Схема карты:
const cardSchema = new mongoose.Schema({
summary: String,
description: String,
tags: Array,
urgency: String,
id: String,
panel: String
});
Схема проекта:
const projectSchema = new mongoose.Schema({
name: {
type: String,
required: [true, 'Project name is required']
},
type: String,
photo: String,
members: [String],
code: String,
cards: [{
"pending": {
type: mongoose.Schema.Types.Object,
ref: 'Card'
},
"inprogress": {
type: mongoose.Schema.Types.Object,
ref: 'Card'
},
"issues": {
type: mongoose.Schema.Types.Object,
ref: 'Card'
},
"completed": {
type: mongoose.Schema.Types.Object,
ref: 'Card'
}
}],
tags: Object
});