Я очень плохо знаком с API (через неделю), и я застрял с проблемой.
У меня есть таблицы в Postgres, и я создал модели для каждого из них. Существует ссылка от одного к другому (при некоторых обстоятельствах). Если ссылка не существует, я хочу использовать значение по умолчанию, которое содержится в другой таблице.
Пример:
Table - items
- id (int)
- name (text)
- startDateTime (date)
- endDateTime (date)
Table - itemTypes
- id (int)
- name (text)
- isDefault (boolean)
Table - itemTypesLinkItems
- id (int)
- itemsId (int)
- itemTypesId (int)
- fromDateTime (date)
- toDateTime (date)
В любой заданный день будет отображаться список предметов. Некоторые из них могут быть связаны с itemTypes через таблицу itemTypesLinkItems, и поэтому я могу показать itemTypes.Name. В остальном я хотел бы показать значение itemTypes.Name, где isDefault = true.
Я искал все, пытался сделать это с помощью представлений SQL, но безуспешно. Я надеюсь, что это то, что можно сделать с помощью JavaScript API.
router.get(‘/:date’, (req, res) =>
db.items.findAll()({
include: [
{
model: db.itemtypelinkitem,
required: false,
include: [
{
model: db.itemtypes
}
]
where: {
startDateTime: {[Op.lte]: req.params.date},
endDateTime: {[Op.gte]: req.params.date}
}
}
]
Я просто не знаю, куда идти отсюда. Если я исключу «обязательный», то будут возвращены только те элементы, на которые есть ссылка. Если я включу его, то все они будут отображаться, и если есть ссылка, она возвращает подробности, в противном случае просто возвращает []. В случае, если он возвращает [], я хотел бы заменить его значениями по умолчанию из itemTypes.