关联关联,包括表格

时间:2018-06-24 13:49:08

标签: javascript mysql node.js express

我有3个表:'notes','categories','subcategories'(MySQL方言): notes category subcategories

序列化方案:

const Note = connectionDB.define('notes', {
id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true,
    allowNull: false
},
categoryId: {
    type: Sequelize.INTEGER
},
subcategoryId: {
    type: Sequelize.INTEGER
},
    title: Sequelize.STRING,
content: {
    type: Sequelize.TEXT,
},
timeCreate: Sequelize.STRING,
avatar: Sequelize.STRING
});

Note.belongsTo(Category, {foreignKey: 'categoryId'});
Note.belongsTo(Subcategory, {foreignKey: 'subcategoryId'});

const Category = connectionDB.define('categories', {
id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true,
    allowNull: false
},            
name: Sequelize.STRING,
})
Category.belongsToMany(Subcategory, {through: 'categoryId'});

const Subcategory = connectionDB.define('subcategories', {
id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true,
    allowNull: false
},            
categoryId: {
    type: Sequelize.INTEGER,
},
name: Sequelize.STRING,
})

每个项目“注释”都有一个类别和一个子类别。 “子类别”具有字段“ categoryId”。当我请求所有条目(“注释”)时,我想在每个字段中查看有关“类别”和“子类别”的信息。但是有关子类别的信息不正确。我了解我应该在“包括”“哪里:...” 哦,我不明白。也许我在表之间没有正确的关系。谢谢!

console.log:

[ 
{ id: 1,
  categoryId: 1,
  subcategoryId: 1,
  title: 'Первая запись',
  content: 'Первая тестовая запись',
  timeCreate: '8:18, 20-го июня 2018',
  avatar: 'uploads/avatars/kaOzCVOgBd.jpg',
  createdAt: 2018-06-20T17:18:36.000Z,
  updatedAt: 2018-06-20T17:18:36.000Z,
  category:
   { id: 1,
   name: 'Первая категория',
   createdAt: 2018-06-20T17:15:11.000Z,
   updatedAt: 2018-06-20T17:15:11.000Z },
  subcategory:
   { id: 1,
   categoryId: 1,
   name: 'Первая под категория первой категории',
   createdAt: 2018-06-20T17:16:32.000Z,
   updatedAt: 2018-06-20T17:16:32.000Z } },
{ id: 2,
  categoryId: 2,
  subcategoryId: 2,
  title: 'Вторая запись',
  content: 'Вторая тестовая запись',
  timeCreate: '8:19, 20-го июня 2018',
  avatar: 'uploads/avatars/zksFzaoSl0.jpg',
  createdAt: 2018-06-20T17:19:12.000Z,
  updatedAt: 2018-06-20T17:19:12.000Z,
  category:
    { id: 2,
      name: 'Вторая категория',
      createdAt: 2018-06-20T17:15:26.000Z,
      updatedAt: 2018-06-20T17:15:26.000Z },
  subcategory:
    { id: 2,
      categoryId: 1,
      name: 'Вторая подкатегория первой категории',
      createdAt: 2018-06-20T17:16:46.000Z,
      updatedAt: 2018-06-20T17:16:46.000Z } }]

包括:

Note.findAll({
    include: [
        { model: Category },
        { model: Subcategory}
    ]        
})

0 个答案:

没有答案