gpt4 book ai didi

node.js - 在每个 GET 的 Sequelize 中自动包含引用模型

转载 作者:行者123 更新时间:2023-12-03 22:35:51 31 4
gpt4 key购买 nike

所以我有 user 模型和 admin 模型,它们被关联为 user n:1 admin 。定义 user 模型的代码如下:

  // users.model.ts
const users = sequelize.define('users', {
...
adminId: {
field: 'admin_id',
type: DataTypes.BIGINT,
allowNull: true
},
...
});

(users as any).associate = function associate(models: any) {
models.users.belongsTo(models.admins);
};

return users;

admin 模型:
  // admins.model.ts
const admins = sequelizeClient.define('admins', {
...
});

(admins as any).associate = function associate(models: any) {
models.admins.hasOne(models.users);
};

return admins;

是否可以在关联中实现一些规则,或者一些 Sequelize hook f.e. afterGet 将自动获取引用的记录?

当我只查询 User 模型时,我想将 admin 对象作为 user 对象的一个​​属性。当我调用 User.findOne(123) 时,它​​将包含引用的 admin 记录的对象。基本上告诉 Sequelize 在获取 JOIN 记录时总是执行 user。这在 Sequelize 中是可能的,还是我必须单独编写逻辑?

最佳答案

这就是使用关联来获取事物的原因。要将关系作为属性,您可以使用 eager loading :

const awesomeCaptain = await Captain.findOne({
where: {
name: "Jack Sparrow"
},
include: Ship
});
// Now the ship comes with it
console.log('Name:', awesomeCaptain.name);
console.log('Skill Level:', awesomeCaptain.skillLevel);
console.log('Ship Name:', awesomeCaptain.ship.name);
console.log('Amount of Sails:', awesomeCaptain.ship.amountOfSails);

关于node.js - 在每个 GET 的 Sequelize 中自动包含引用模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60821299/

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