Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

248
Views
Secuela 'dónde' en el padre y el hijo cuando el padre tiene muchos hijos

tengo 2 modelos:

 class User extends Model { static associate(models) { User.hasMany(models.Role, { foreignKey: 'userId' }); } }; User.init({ firstname: { type: DataTypes.STRING, }, lastname: { type: DataTypes.STRING, }, allowedApps: { type: DataTypes.ENUM({ values: Object.keys(PORTALS) }), allowNull: false } }, { sequelize, paranoid: true, modelName: 'User', }); class Role extends Model { static associate(models) { Role.BelongsTo(models.User, { foreignKey: 'userId' }); } }; Role.init({ type: { type: DataTypes.STRING, unique: true }, name: DataTypes.STRING, userId: { type: DataTypes.INTEGER, allowNull: false, } }, { sequelize, paranoid: true, modelName: 'Role', });

Me gustaría obtener todos los usuarios donde el nombre O el tipo de rol coincida con una determinada condición. Algo como:

 User .findAndCountAll({ where: { $or: [ { firstname: "John Doe" }, { "$Role.type$": "Admin" } ] }, include: [{ model: Role, }], }).limit=10,offset=0 .then(users => res.status(200).send(users)) .catch(error => { return res.sendStatus(500); });

la consulta anterior me da el error: "SequelizeDatabaseError: columna desconocida 'Role.type' en 'field list'"

Quiero buscar a través del modelo secundario cuando tiene una relación de uno a muchos con mi límite y compensación intactos. La misma consulta me daría éxito si el usuario tuviera una relación HasOne con el rol. Este es solo un código de ejemplo de lo que trato de lograr, así que ignore cualquier error tipográfico y tonto.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Después de un poco de excavación:

 await User.findAll({ where: { $or: [ { firstname: "John Doe" }, { "$Role.type$": "Admin" } ] }, include: { model: Role, as: 'Role', required: false } });

Sin embargo, no tiene sentido lógico seleccionar Usuarios que no tienen un Rol asociado ( required: false ), al consultar a dichos Usuarios con una propiedad que existe en Rol ($o: $Role.type$). Si establecemos Required = true , entonces violamos su condición inicial

firstname O el tipo de rol coincide con una determinada condición.

Lo siguiente aborda este problema:

 await User.findAll({ include: { model: Role, required: false } }) .then( users => users .filter(user => user?.firstName === "John Doe" || user.role?.type === "Admin"); );
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!