簡體   English   中英

在續集中包括一個belongsTo關聯

[英]Including a belongsTo association in sequelize

我遵循文檔中的sequelize示例,並且在如何在子模型中包括與父項的關聯方面陷入困境。

有關association文檔中 ,模型以及模型之間的關系的定義如下:

 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數組中。

在序列化最小快速應用程序中 ,模型是在單獨的文件中定義的,並且通過調用模型上的方法來建立關聯。 在這種情況下,我有消息和用戶,一條消息與其用戶之間具有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'}], }); } }; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM