如何使用belongsToMany关联对fetchAll进行高级查询?

时间:2018-07-04 23:00:09

标签: node.js postgresql sequelize.js

我有以下两种模型:客户商人。我在这两个之间建立了关联:

Customer.belongsToMany(models.Merchant, {
  through: models.MerchantCustomer,
  as: 'merchant',
  foreignKey: 'customer',
  otherKey: 'merchant'
});

Merchant.belongsToMany(models.Customer, {
  through: models.MerchantCustomer,
  as: 'customer',
  foreignKey: 'merchant',
  otherKey: 'customer'
});
  

一个客户可以在几个商人上,而一个商人可以拥有   客户。

我找不到如何检索特定商家的所有客户,包括关联表的特定属性:

const MerchantCustomer = sequelize.define(
    'MerchantCustomer',
    {
      balance: {
        type: DataTypes.INTEGER,
        allowNull: false,
        defaultValue: 0
      },
      status: {
        type: DataTypes.UUID,
        defaultValue: null
      }, 
    },
    {}
);

我希望得到这样的结果:

[{
    customerObject,
    balance,
    status
}]

我尝试过的事情:

const customers = await Customer.findAll({
  include: [
    {
      model: Merchant,
      as: 'merchant',
      through: {
        attributes: ['balance', 'status'],
        where: { merchant: req.app.locals.merchant.id }
      }
    }
  ]
});

我有一个客户数组,但不仅有指定的商家,我还有所有商家的所有客户,并且没有属性 balance和{{ 1}}。

我应该如何编辑我的请求?

0 个答案:

没有答案