防止续集添加结尾小写的's'

时间:2017-03-22 08:31:45

标签: javascript postgresql orm sequelize.js

我将此表定义为

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'。 我该如何防止这种情况?

1 个答案:

答案 0 :(得分:1)

定义关联时需要使用alias。如果没有,Sequelize会自动在关联的模型名称末尾添加不需要的s(如果是1:m或n:m关系)。让我们假设hasMany关系,只是为了展示它的样子

T_CPCORE_INGREDIENTS.hasMany(T_CPCORE_INGREDIENT_UNITS, { as: 'T_CPCORE_INGREDIENT_UNITS' });

aliasas)定义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

注意:别名也可以定义为具有属性singularplural的对象,这将定义单个关联或多个关联的命名策略。