Sequelize.js 管理模型别名

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

目前,Sequelize模型接受自定义别名对象:

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, ...]);