如何在 SequelizeJS 中创建模型时设置额外属性? [英] How to set extra attributes of through model on creation in SequelizeJS?

查看:46
本文介绍了如何在 SequelizeJS 中创建模型时设置额外属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的模型:

 Recipe (id, name)
 Ingredient (id, name)
 Recipe_Ingredient (recipeId, ingredientId, quantity)

我的关联:

Recipe.belongsToMany(Ingredient, { through: Recipe_Ingredient })
Ingredient.belongsToMany(Recipe, { through: Recipe_Ingredient })

我的问题:

如何创建包含一些成分及其附加数量的食谱?

How can I create a Recipe with some Ingredients and the quantities attached to them?

我试过了:

Recipe.create({
  name: 'Pizza',
  ingredients:[
    {
      name: 'mozarella',
      recipe_ingredients: {
          quantity: 5
      }
    }
  ]
}, {
    include:[Ingredient]
})

为 Recipe、Ingredient 和 Recipe_Ingredient 创建记录.唯一的问题是数量的值不是从数据源采集的.

Records are created for Recipe, Ingredient and the Recipe_Ingredient. The only problem is that the value of the quantity is not collected from the data source.

推荐答案

过去无法做到这一点,但在 2018 年 10 月 23 日在 sequelize PR #10050.

It was not possible to do this in the past, but in October 23, 2018 this was fixed in sequelize PR #10050.

截至今天(2018 年 10 月 24 日),该修复程序尚未发布,但是一旦 v5.0.0-beta14 发布,您将能够执行以下操作:

As of today (2018-10-24) the fix is not released yet, but as soon as v5.0.0-beta14 comes out, you'll be able to do the following:

Recipe.create({
    name: 'Pizza',
    ingredients: [
        {
            name: 'mozarella',
            recipe_ingredient: {
                quantity: 5
            }
        }
    ]
}, {
    include: Ingredient
})

另外,请注意,正确的用法是 recipe_ingredient: 的单数形式,而不是您在问题中尝试的复数形式.这是有道理的,因为对于与给定配方相关联的给定成分,始终只涉及一个 Recipe_Ingredient.

Also, note that the correct usage is recipe_ingredient: in the singular form, not in the plural form as you tried in your question. This makes sense, because for a given Ingredient, associated with a given Recipe, there is only one Recipe_Ingredient involved, always.

如果不想等v5.0.0-beta14(虽然很可能很快会发布),可以直接从github的master分支安装如下:

If you do not want to wait for v5.0.0-beta14 (although it will probably be released very soon), you can install it directly from github's master branch as follows:

npm install --save https://github.com/sequelize/sequelize/tarball/master

这篇关于如何在 SequelizeJS 中创建模型时设置额外属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆