我将此表定义为
var T_CPCORE_INGREDIENT_UNITS = sequelize.define('T_CPCORE_INGREDIENT_UNITS'
我已经用它配置了它,以冻结表名
freezeTableName: true
我将此表用作另一个表中的包含查询,如此
request.models.T_CPCORE_INGREDIENTS.findById(request.params.id, {
include: [
{
model: request.models.T_CPCORE_INGREDIENT_UNITS
}
但是如果我打印出来的对象,我会在控制台中看到T_CPCORE_INGREDIENT_UNITS现在看起来像这样
T_CPCORE_INGREDIENT_UNITs
最后有一个小写的's'。这非常烦人,因为有时在我的代码中,我使用这个名称必须记住使用小写的's'。 我该如何防止这种情况?
答案 0 :(得分:1)
定义关联时需要使用alias
。如果没有,Sequelize会自动在关联的模型名称末尾添加不需要的s
(如果是1:m或n:m关系)。让我们假设hasMany
关系,只是为了展示它的样子
T_CPCORE_INGREDIENTS.hasMany(T_CPCORE_INGREDIENT_UNITS, { as: 'T_CPCORE_INGREDIENT_UNITS' });
alias
(as
)定义plural name of associated model。定义alias
时重要的是在查询时急切加载模型时使用它
request.models.T_CPCORE_INGREDIENTS.findById(
request.params.id, {
include: [
{
model: request.models.T_CPCORE_INGREDIENT_UNITS,
as: 'T_CPCORE_INGREDIENT_UNITS'
}
}
)
现在,模型将属性T_CPCORE_INGREDIENT_UNITS
作为数组,最后没有添加s
。
注意:别名也可以定义为具有属性singular
和plural
的对象,这将定义单个关联或多个关联的命名策略。