【发布时间】:2021-10-17 14:31:52
【问题描述】:
我有 2 个模型:
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',
});
我想获取名字或角色类型与特定条件匹配的所有用户。比如:
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);
});
上面的查询给了我错误:“SequelizeDatabaseError: Unknown column 'Role.type' in 'field list'”
当子模型具有一对多关系且我的限制和偏移完整时,我想搜索子模型。如果用户与角色有 HasOne 关系,相同的查询会给我成功。 这只是我尝试实现的示例代码,因此请忽略任何拼写错误和愚蠢的错误。
【问题讨论】:
标签: mysql node.js sequelize.js