我在sails-hook-sequelize应用中使用sails-hook-sequelize-blueprints和sails.js。
我有一个名为Site
的模型。
module.exports = {
attributes: {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.STRING,
required: true
}
},
associations: function() {
Site.hasMany(Templates, {
as: 'templates'
});
}
};
每个网站都有多个Templates
与之关联。
module.exports = {
attributes: {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.STRING,
required: true
}
}
};
我收到错误说
/user/myproject/node_modules/sails-hook-sequelize-blueprints/index.js:362
var alias = foreign.as || foreign.name || foreign;
^
TypeError: Cannot read property 'as' of undefined
知道它可能是什么吗?
答案 0 :(得分:1)
您需要在foreignKey
定义中添加hasMany
:
Site.hasMany(Templates, {
as: 'templates',
foreignKey: 'SiteId'
});
并将belongsTo
关联添加到Templates
模型定义:
Templates.belongsTo(Site) // this will add SiteId to the Templates table
与您的命名保持一致也是一种好习惯 - 模型名称应该是单数(Template
而不是Templates
),这些关系及其后续方法将更加自我解释。 Sequelize会在有意义的地方复数(即你正在处理许多实例)。
答案 1 :(得分:-1)
如上所述,这是因为您的变量'foreign'未定义,并且您尝试读取未定义的属性。