У меня есть таблица под названием ДОМ . И у него есть столбец с именем STATUS .
У меня также есть таблица с именем TASK , и в ней также есть столбец с именем STATUS .
В каждом доме много задач. И если есть одна задача со статусом inProgress
, статус дома должен быть inProgress
. И если все задачи - done
, то дом - done
.
Я хочу, чтобы этот столбец статуса дома зависел от статуса всех его задач.
Когда я позвоните /getHouses
, вот что я делаю, чтобы добавить свойство под названием status для каждого домашнего объекта, потому что в настоящее время у меня нет столбца STATUS в таблице HOUSE .
exports.getMyHouses = (req, res) => {
const page = myUtil.parser.tryParseInt(req.query.page, 0)
const limit = myUtil.parser.tryParseInt(req.query.limit, 10)
db.House.findAndCountAll({
where: { userId: req.user.id },
include: [
{
model: db.Task,
as: "task",
include: [
{
model: db.Photo,
as: "photos"
}
]
},
{
model: db.Address,
as: "address"
}
],
offset: limit * page,
limit: limit,
order: [["id", "ASC"]],
})
.then(data => {
let newData = JSON.parse(JSON.stringify(data))
const houses = newData.rows
for (let house of houses) {
house.status = "done"
const tasks = house.task
for (let task of tasks) {
if (task.status == "inProgress") {
house.status = "inProgress"
break
}
}
}
res.json(myUtil.response.paging(newData, page, limit))
})
.catch(err => {
console.log("Error get houses: " + err.message)
res.status(500).send({
message: "An error has occured while retrieving data."
})
})
}
РЕДАКТИРОВАТЬ: Я только что понял, что, возможно, я смогу обновлять столбец статуса дома каждый раз, когда есть обновление статуса задачи. Я никогда не думал об этом раньше.
Но мне все равно понравилось бы, если бы кто-нибудь подтвердил, что это хорошая стратегия или есть ли лучшая.