防止续集添加结尾小写's'
Posted
技术标签:
【中文标题】防止续集添加结尾小写\'s\'【英文标题】:Prevent sequelize adding ending lowercase 's'防止续集添加结尾小写's' 【发布时间】:2017-03-22 08:31:45 【问题描述】:我将此表定义为
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】:定义关联时需要使用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
属性的对象,这将定义单个关联或多个关联的命名策略。
【讨论】:
以上是关于防止续集添加结尾小写's'的主要内容,如果未能解决你的问题,请参考以下文章
将一个路径进行标准化的解析, 防止路径中连续出现多个‘/’,以及防止路径中出现'\', 防止路径结尾出现 '/'