(一周以来)我对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)
在任何给定日期,将显示一个项目列表。其中一些可能会通过itemTypesLinkItems表链接到itemTypes,因此我可以显示itemTypes.Name。对于其余部分,我想显示isType = true的itemTypes.Name值。
我搜索了所有内容,并尝试使用SQL视图进行操作,但是没有运气。我希望可以在API的JavaScript中完成此操作。
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中的值。
答案 0 :(得分:0)
希望您能很好地理解您的问题。
您(商品,itemTypes)之间建立了多对多关系,并希望获得默认设置 获取所有项目时的itemType。 所以我认为这个问题与Sequlize无关。 在将新记录插入“项目”表时,您必须插入默认的“ itemType”。