Как добавить дополнительные поля в объединенную таблицу «ownToMany» в Sequelize? - PullRequest
0 голосов
/ 05 мая 2020

У меня две таблицы в продолжении

  1. Warehouse
  2. ProductItem

Затем я хочу создать объединенную таблицу с именем Inventory (productionItemId, inventoryId, qty) и вот мой текущий код:

Warehouse.belongsToMany(ProductItem, {
      as: "productItems",
      through: "inventories",
    });

ProductItem.belongsToMany(models.Warehouse, {
      as: "warehouses",
      through: "inventories",
    });

Приведенный выше код создает только инвентаризацию объединенной таблицы (productionItemId, inventoryId). Я хотел бы знать, как мы можем добавить дополнительное поле в инвентаризацию, такое как количество и так далее. Благодарим за вашу помощь. Спасибо

1 Ответ

0 голосов
/ 05 мая 2020

См. BelongsToMany в официальном do c

Цитата:

Если вам нужны дополнительные атрибуты в вашей таблице объединения, вы можете определить модель для объединения таблицу в sequelize, прежде чем вы определяете ассоциацию, а затем сообщите sequelize, что она должна использовать эту модель для присоединения, вместо создания новой:

class User extends Model {}
User.init({}, { sequelize, modelName: 'user' })
class Project extends Model {}
Project.init({}, { sequelize, modelName: 'project' })
class UserProjects extends Model {}
UserProjects.init({
  status: DataTypes.STRING
}, { sequelize, modelName: 'userProjects' })

User.belongsToMany(Project, { through: UserProjects })
Project.belongsToMany(User, { through: UserProjects })

Чтобы добавить новый проект пользователю и установить его status, вы передаете дополнительные параметры через сеттер, который содержит атрибуты для таблицы соединения

user.addProject(project, { through: { status: 'started' }})
...