问题描述
我正在开发管理商店的应用程序。 每家商店都有一个或多个标签。
例如:
我的目标是忽略具有特定标签的商店。例如,当使用标签“Hypermarket”进行查询时,我想忽略 Walmart。我应该只买亚马逊。
我有 3 个表:Stores、Tags 和 Tagsstores(StoreId、TagId)。
Node.JS 代码中的 where 子句是:
where['$tags.name$'] = {
[Op.or]: {
[Op.is]: null,[Op.notin]: exclusion,}
}
SELECT
"Stores"."id","Stores"."name","Tags"."id" AS "tags.id","Tags"."name" AS "tags.name"
FROM
"Stores" AS "Stores"
LEFT OUTER JOIN (
"Tagsstores" AS "Tags->Tagsstores"
INNER JOIN "Tags" AS "Tags" ON "Tags"."id" = "Tags->Tagsstores"."TagId"
) ON "Stores"."id" = "Tags->Tagsstores"."StoreId"
WHERE
(
"Tags"."name" IS NULL
OR "Tags"."name" NOT IN ('Hypermarket')
)
ORDER BY
"Stores"."name" ASC
这不好,因为标签在不同的行上,所以过滤掉 Walmart 的 Hypermarket 标签后,Walmart 的零售标签仍然存在,我的结果列表中出现了 Walmart。
如果有帮助,模型是:
店铺模式:
model.associate = function (models) {
model.Tag = model.belongsToMany(models.Tag,{
through: 'Tagsstores',as: 'tags',foreignKey: 'StoreId',scope: {
scope: 'STORE'
}
});
Tagsstores 模型:
model.associate = function (models) {
model.belongsTo(models.Store,{})
model.belongsTo(models.Tag,{})
}
您知道如何使用 Sequelize 实现我所需要的(如果一个字符串至少匹配 Store 的一个标签,我想完全过滤掉 Store)?
我在文档中找不到线索。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)