首页 > 解决方案 > Sequelize hasOne join:包括意外。元素必须是模型、关联或对象

问题描述

我想使用外键在两个表之间建立关系来读取我的描述(功能字符串(40))。我的模型和代码:


第一个模型:

id: {
      autoIncrement: true,
      type: Sequelize.INTEGER,
      allowNull: false,
      primaryKey: true
    },
    id_user: {
      type: Sequelize.INTEGER,
      allowNull: false
    },
    id_role: {
      type: Sequelize.INTEGER,
      allowNull: false
    },
    id_funzione: {
      type: Sequelize.INTEGER,
      allowNull: false
    }
  }, {
    sequelize,
    tableName: 'abilitazioni',
    schema: 'public',
    timestamps: false,
    indexes: [
      {
        name: "pk_abilitazioni",
        unique: true,
        fields: [
          { name: "id"},
        ]
      },
    ]

第二种型号:

id: {
      autoIncrement: true,
      type: Sequelize.INTEGER,
      allowNull: false,
      primaryKey: true
    
    },
    funzione: {
      type: Sequelize.STRING(40),
      allowNull: false
    }
  }, {
    sequelize,
    tableName: 'funzioni',
    schema: 'public',
    timestamps: false,
    indexes: [
      {
        name: "pk_funzioni",
        unique: true,
        fields: [
          { name: "id_funzione" },
        ]
      },
    ]

关系

db.Abilitazioni.hasOne(db.Funzioni, {
   foreignKey: 'id_funzione'
   });
   db.Funzioni.belongsTo(db.Abilitazioni);

在数据库上找到

Abilitazioni.findAll({
            where: { id_role: id
            },
            include: [{
                Funzioni, 
            }]
        })

我试图创建一对一的关系来使用外键读取描述字段。

This query : 
SELECT funzioni.id , funzioni.funzione , funzioni.access_level
from public.abilitazioni, public.funzioni
 where abilitazioni.id_user = 1 and id_role= 1 and 

abilitazioni.id_funzione = funzioni.id ;

标签: node.jsangularormsequelize.js

解决方案


推荐阅读