Sequelize.js 管理模型别名
目前,Sequelize模型接受自定义别名对象:Sequelize.js 管理模型别名,sequelize.js,Sequelize.js,目前,Sequelize模型接受自定义别名对象: Parent.hasMany(Child, { as: { singular: string; plural: string;}}) 对于一对多和多对多,而一对一关系仅接受单个字符串别名: Dad.hasOne(Mum, { as: 'Mummy'}) 尝试将自定义别名对象应用于一对一关系时,将抛出definction.js错误 Dad.hasOne(Mum, { as: { singular: 'Mummy', plural: 'Mummi
Parent.hasMany(Child, { as: { singular: string; plural: string;}})
对于一对多和多对多,而一对一关系仅接受单个字符串别名:
Dad.hasOne(Mum, { as: 'Mummy'})
尝试将自定义别名对象应用于一对一关系时,将抛出definction.js错误
Dad.hasOne(Mum, { as: { singular: 'Mummy', plural: 'Mummies' }})
D:\Projects\Sequelize\node_modules\inflection\lib\inflection.js:594
var ignore = ( inflector.indexOf( skip, str.toLowerCase()) > -1 );
TypeError: str.toLowerCase is not a function
at Object._apply_rules (D:\Projects\Sequelize\node_modules\inflection\lib\inflection.js:594:53)
at Object.singularize (D:\Projects\Sequelize\node_modules\inflection\lib\inflection.js:692:24)
at Object.singularize (D:\Projects\Sequelize\node_modules\sequelize\lib\utils.js:285:21)
at new HasOne (D:\Projects\Sequelize\node_modules\sequelize\lib\associations\has-one.js:45:37)
at Function.<anonymous> (D:\Projects\Sequelize\node_modules\sequelize\lib\associations\mixin.js:92:25)
at Function.Dads.associate.models [as associate] (D:\Projects\Sequelize\dist\models\schema\Dad.js:17:20)
我通过模型对象直接访问它:
connection = new Sequelize();
models: {
Service_User: connection.import(path/to/schema)
Service_Permission: connection.import(path/to/schema)
Service_Activity: connection.import(path/to/schema)
}
models.Service_User.create({});
我面临的问题是,我无法预测访问器名称是什么
我有没有办法:
connection = new Sequelize();
models: {
Service_User: connection.import(path/to/schema)
Service_Permission: connection.import(path/to/schema)
Service_Activity: connection.import(path/to/schema)
}
models.Service_User.create({});
This can be done by not utilising alias:
Dad.hasOne(Mum);
const dad = models.Dad.findOne(...);
// dad.getMum()
// is this legal, definitely not safe right?!
const mum = dad.[`get${models.Dad.options.name.singular}`]();
const MumAlias = { singular: 'Mummy', plural: 'Mummies' };
MumsClub.hasMany(Mum, { as: MumAlias })
Dad.hasOne(Mum, { as: MumAlias })
const mumsClub = models.MumsClub.findOne(...);
const dad = models.Dad.findOne(...);
// dad.getMummy()
const mum = dad[`get${MumAlias.singular}`];
// mumsClub.setMummies()
mumsClub[`set${MumAlias.plural}`]([mum1, mum2, mum3, ...]);