【问题标题】:one-to-many relationship with sequelize与 sequelize 的一对多关系
【发布时间】:2021-11-04 00:49:14
【问题描述】:

我有 2 个表,users 和 users_signature,其中签名需要几个应用程序,我需要根据应用程序进行选择。

型号:

用户

const { INTEGER } = require('sequelize');
const Sequelize = require('sequelize');
const database = require('../../config/db');
const User_has_signature = require('./user_has_signature');
 
const Usuario = database.define('usuario', {
    usu_id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    usu_rg: {
        type: Sequelize.STRING,
    },
},
{
    freezeTableName: true,
    createdAt: false,
    updatedAt: false,
});
User.hasMany(User_has_signature, {as: 'user_has_signature'});

module.exports = User;

User_has_signature

const { INTEGER } = require('sequelize');
const Sequelize = require('sequelize');
const database = require('../../config/db');
 
const User_has_signature = database.define('user_has_signature', {
    usu_has_signature_id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    user_usu_id: {
        type: Sequelize.STRING,
    },
    signature_aplicativo_signature_aplicativo_id: {
        type: Sequelize.STRING,
    },
    signature_type_signature_type_id: {
        type: Sequelize.STRING,
    },
},
{
    freezeTableName: true,
    createdAt: false,
    updatedAt: false,
});
User_has_signature.associate = (models) => {
    User_has_signature.belongsTo(models.User,
      { foreignKey: 'user_usu_id', as: 'users' });
  };
module.exports = User_has_signature;

控制器

用户控制器

const User = require("../../model/user/user")
const User_has_signature = require("../../model/user/user_has_signature")

async index(req, res){
        const user = await User.findAll({
            include: [{
              model: User_has_signature,
              foreignKey: 'user_usu_id',
              through: {
                where: {signature_ttype_signature_type_id: 3}
              }
            }]
          })
        res.status(200).json(user)
        return
    }

在终端返回给我的错误是:(节点:15168) UnhandledPromiseRejectionWarning: SequelizeEagerLoadingError: user_has_signature 使用别名与 usuario 相关联。你必须 使用“as”关键字在您的包含中指定别名 声明

【问题讨论】:

标签: node.js sequelize.js


【解决方案1】:

我认为您必须在编写查询时指定别名:

include: [{
          model: User_has_signature,
          foreignKey: 'user_usu_id',
          as : 'users'
          through: {
            where: {signature_ttype_signature_type_id: 3}
}]

无论哪种方式,我都在 Typescript 中更多地使用 Sequelize,所以我不确定语法。

它处理一对多关系的方式并不是我见过的最清晰的(比如 Symfony 或 Spring)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2020-09-09
    • 2017-12-25
    • 2023-04-11
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多