Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用一个外键继续关联_Javascript_Sqlite_Sequelize.js - Fatal编程技术网

Javascript 使用一个外键继续关联

Javascript 使用一个外键继续关联,javascript,sqlite,sequelize.js,Javascript,Sqlite,Sequelize.js,我有一个最初使用Django创建的数据库,它是为单个外键关联设置的 现在,这将映射为: export const Category = sequelize.define( 'category', { name: { type: Sequelize.STRING, unique: true }, }, { timestamps: false, tableName: 'ingredients_category', } ); export const In

我有一个最初使用Django创建的数据库,它是为单个外键关联设置的

现在,这将映射为:

export const Category = sequelize.define(
  'category',
  {
    name: { type: Sequelize.STRING, unique: true },
  },
  {
    timestamps: false,
    tableName: 'ingredients_category',
  }
);

export const Ingredient = sequelize.define(
  'ingredient',
  {
    name: { type: Sequelize.STRING, unique: true },
    notes: { type: Sequelize.TEXT, defaultValue: '' },
    category_id: {
      type: Sequelize.INTEGER,
      references: {
        model: Category,
        key: 'id',
      },
    },
  },
  {
    timestamps: false,
    tableName: 'ingredients_ingredient',
  }
);

Category.belongsToMany(Ingredient, {
  foreignKey: 'category_id',
  constraints: false,
  through: 'ingredient_category',
});
Ingredient.hasOne(Category, {
  // foreignKey: 'ingredientId',
  constraints: false,
});
现在sequelize抱怨说它在类别模型上缺少一个外键,但尽管一种成分上只有一个类别,但类别并不限于这一种成分。有人能帮我弄明白这种联系吗

更新:对于最终答案,它只是一个不正确的关联设置:

export const Category = sequelize.define(
  'category',
  {
    name: { type: Sequelize.STRING, unique: true },
  },
  {
    timestamps: false,
    tableName: 'ingredients_category',
  }
);

export const Ingredient = sequelize.define(
  'ingredient',
  {
    name: { type: Sequelize.STRING, unique: true },
    notes: { type: Sequelize.TEXT, defaultValue: '' },
  },
  {
    timestamps: false,
    tableName: 'ingredients_ingredient',
  }
);

Category.hasMany(Ingredient, {
  foreignKey: 'category_id',
});
Ingredient.belongsTo(Category, {
  foreignKey: 'category_id',
});

belongtomany
用于关系N:M,因此
component\u category
应该是第三个表。现在,据我所知,您需要一个关系,其中
成分
1:N
类别
,因此
类别
可以包含许多成分,因此您应该使用
hasMany

在您的案例中,您不能使用
hasOne
,因为它会在
类别上创建配料的外键,而
hasMany
会在配料上创建FK

Category.hasMany(Ingredient, {
  foreignKey: 'category_id',
  constraints: false,
});
Ingredient.belongsTo(Category, {
  // foreignKey: 'ingredientId',
  constraints: false,
});

是文档:

属于一个关系N:M,因此
成分\u类别
应该是第三个表。现在,据我所知,您需要一个关系,其中
成分
1:N
类别
,因此
类别
可以包含许多成分,因此您应该使用
hasMany

在您的案例中,您不能使用
hasOne
,因为它会在
类别上创建配料的外键,而
hasMany
会在配料上创建FK

Category.hasMany(Ingredient, {
  foreignKey: 'category_id',
  constraints: false,
});
Ingredient.belongsTo(Category, {
  // foreignKey: 'ingredientId',
  constraints: false,
});
文件是否: