¿Cómo pegar el valor de la consulta en la consulta?
Quiero obtener datos del usuario, incluido su par (asociación). Para separar dos asociaciones de una tabla a otra tabla, uso "as". Por favor, ayúdame.
Traté de usar el nombre de la clase y sequelize.col, pero aparentemente estoy haciendo algo mal.
Error
UnhandledPromiseRejectionWarning: SequelizeEagerLoadingError: Pairs is associated to Users multiple times. To identify the correct association, you must use the 'as' keyword to specify the ali as of the association you want to include.Consulta
const user = await userModel.findOne({ where: { id:userId }, attributes: ['id', 'login', 'sex'], include: { model: pairModel, as: userModel.sex } });Modelo de usuario
'use strict'; const { Model } = require('sequelize'); module.exports = (sequelize, DataTypes) => { class User extends Model { /** * Helper method for defining associations. * This method is not a part of Sequelize lifecycle. * The `models/index` file will call this method automatically. */ static associate(models) { // define association here User.hasOne(models.pair, { as: 'male', foreignKey: 'maleId', }); User.hasOne(models.pair, { as: 'female', foreignKey: 'femaleId', }); /*User.hasMany(models.Pair, { foreignKey: 'firstId', foreignKey: 'secondId', });*/ } }; User.init({ login: DataTypes.STRING, password: DataTypes.STRING, sex: { type: DataTypes.STRING, defaultValue: "male" }, }, { sequelize, modelName: 'Users', }); return User; };Par modelo
'use strict'; const { Model } = require('sequelize'); module.exports = (sequelize, DataTypes) => { class Pair extends Model { /** * Helper method for defining associations. * This method is not a part of Sequelize lifecycle. * The `models/index` file will call this method automatically. */ static associate(models) { // define association here Pair.belongsTo(models.user, { as: 'male', foreignKey: 'maleId' }); Pair.belongsTo(models.user, { as: 'female', foreignKey: 'femaleId' }); } }; Pair.init({ homeWork: DataTypes.STRING, }, { sequelize, modelName: 'Pairs', },); return Pair; };