首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sequelize - Join varchar和varchar数组

Sequelize - Join varchar和varchar数组
EN

Stack Overflow用户
提问于 2018-11-15 23:30:11
回答 1查看 314关注 0票数 0

我正在尝试将以下PostgreSQL查询转换为Sequelize:

代码语言:javascript
复制
select reviews.product_id, products.brand
  from reviews inner join products 
  on reviews.product_id = any(products.product_id);

reviews.product_id是一个varchar,而products.product_id是一个varchar数组,这就是我使用any运算符的原因。我创建了这个Sequelize查询,试图复制上面的查询,但它只返回一个空对象。

代码语言:javascript
复制
db.reviews.findAll({
  attributes: ["product_id"],
  include: [{
    model: db.products,
    as: "products",
    on: {
      col1: where(col("reviews.product_id"), "=", {[Op.contains]: [col("products.product_id")]})
    },
    required: true,
    attributes: ["brand"]
  }],
  limit: 10
})
  .then(reviews => res.json(reviews))
  .catch(err => res.json(err));

PostgreSQL查询按照预期工作,所以我知道它应该返回一些东西。对于上下文,我在我的reviews模型中设置了以下belongsTo关联:

代码语言:javascript
复制
myModel.associate = models => {
  myModel.belongsTo(models.products, {foreignKey: "product_id", targetKey: "product_id", as: "products"});
};

我不知道如何准确地指定我正在连接不同的类型(varchar和varchar数组)以获得我想要的结果。有没有人知道解决方案?

EN

回答 1

Stack Overflow用户

发布于 2018-11-15 23:52:19

我就想明白了。我用错了接线员。我刚刚将include中的on参数从:

代码语言:javascript
复制
on: {
  col1: where(col("reviews.product_id"), "=", {[Op.contains]: [col("products.product_id")]})
}

至:

代码语言:javascript
复制
on: {
  col1: where(col("reviews.product_id"), "=", {[Op.any]: [col("products.product_id")]})
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53322743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档