gpt4 book ai didi

javascript - 在 sequelize 中包含一个关联关联

转载 作者:行者123 更新时间:2023-12-03 22:40:26 25 4
gpt4 key购买 nike

我正在关注文档中的 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,并包含在 include 数组中。

在 sequelize 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}]

最佳答案

是的……我意识到因为关联已经建立,所以我所要做的就是包含模型:

const createMessage = async (message) => {
const author = await findUser(message.author);
if (author) {
const authorId = author.dataValues.id;
return db.Message.create({
content: message.content,
authorId: authorId,
});
} else {
return db.Message.create({
author: {
firstName: message.author,
},
content: message.content,
}, {include:[{model: db.User, as: 'author'}],
});
}
};

关于javascript - 在 sequelize 中包含一个关联关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48597334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com