繁体   English   中英

与 sequelize 的一对多关系

[英]one-to-many relationship with sequelize

我有 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
    }

在终端中返回给我的错误是:(node:15168) UnhandledPromiseRejectionWarning: SequelizeEagerLoadingError: user_has_signature 使用别名关联到 usuario。 您必须使用“as”关键字在包含语句中指定别名

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM