gpt4 book ai didi

node.js - 嵌套 findall() 与 ‘case’ 等效于包含语句

转载 作者:行者123 更新时间:2023-12-03 22:37:40 26 4
gpt4 key购买 nike

我对 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。对于其余部分,我想显示 isDefault = true 的 itemTypes.Name 值。

我到处搜索,尝试用 SQL View 来做,但没有运气。我希望这可以在 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 中的值替换它。

最佳答案

我希望能很好地理解你的问题。

您使 多对多 (items, itemTypes) 之间的关系并希望获得默认值
获取所有项目时的 itemType。
所以我认为这个问题与 Sequlize 无关。
在将新记录插入到“items”表中时,您必须插入默认的“itemType”。

关于node.js - 嵌套 findall() 与 ‘case’ 等效于包含语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56697672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com