【发布时间】:2018-07-13 19:40:11
【问题描述】:
我正在关注文档中的 sequelize 示例,但我不知道如何在子模型中包含与父级的关联。
在docs on associations中,模型和模型之间的关系是这样定义的:
Product.User = Product.belongsTo(User);
User.Addresses = User.hasMany(Address);
return Product.create({
title: 'Chair',
user: {
first_name: 'Mick',
last_name: 'Broadstone',
}
}, {
include: [{
association: Product.User,
}]
});
关联分配给 Product.User,并包含在包含数组中。
在续集minimum express application 中,模型在单独的文件中定义,并且通过调用模型上的方法来建立关联。在这种情况下,我有 Message 和 User,在一条消息和它的用户之间有一个 belongsTo 关系。
//message.js
module.exports = (sequelize, DataTypes) => {
var Message = sequelize.define('Message', {
content: DataTypes.STRING,
authorId: DataTypes.INTEGER,
});
Message.associate = function (models) {
models.Message.belongsTo(models.User, {
foreignKey: 'authorId',
as: 'author',
});
};
return Message;
};
//user.js
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define('User', {
firstName: DataTypes.STRING,
});
User.associate = function (models) {
models.User.hasMany(models.Message, {foriegnKey: 'authorId'});
};
return User;
};
我认为我需要以某种方式从模型中获取关联。我按照文档在模型之间建立关联:
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
但是我该怎么做Message.User = Message.belongsTo(User) 这样当我创建包含数组时才做include[{association: Message.User}] ?
【问题讨论】:
标签: javascript database associations sequelize.js belongs-to