gpt4 book ai didi

objection.js - 在 Objection.js 中,设置关系映射有什么好处?

转载 作者:行者123 更新时间:2023-12-05 01:37:46 25 4
gpt4 key购买 nike

我对 relationMappings 在 Objection.js 模型类中的作用感到困惑。

我想一旦我们在模型中设置了关系映射,我们就会在每个查询中获得相关数据。但是,事实证明我仍然只有模型属性本身。

我还应该使用什么来获取查询中的相关数据吗?

最佳答案

关系映射为模型语义提供了如何在需要时获取关系。除了主表的行之外,始终查询所有相关行对性能来说真的很糟糕。当您创建关系映射到模型时,您将不需要在每次需要查询关系时手动编写连接。它们还启用许多其他反对功能,这需要信息如何在数据库中进行行关系。

要在查询中使用关系映射 Objection.js 要求在每个查询中,您必须使用 .withGraphFetched.withGraphJoined 告诉您要获取与主行的哪些关系方法 https://vincit.github.io/objection.js/guide/query-examples.html#eager-loading

例如:

class Person extends Model {
static get tableName() {
return 'persons';
}

static get relationMappings() {
return {
pets: {
relation: Model.HasManyRelation,
modelClass: Animal,
join: {
from: 'persons.id',
to: 'animals.ownerId'
}
}
};
}
}


const people = await Person.query().withGraphFetched('pets');

// Each person has the `pets` property populated with Animal objects related
// through the `pets` relation.
console.log(people[0].pets[0].name);
console.log(people[0].pets[0] instanceof Animal); // --> true

当您使用 .insertGraph 插入嵌套对象数据时,也会使用映射,以便将相关对象插入到相关表中,并根据关系映射声明自动填充外键引用等。

还有许多其他地方使用了它们,但我希望这能让您大致了解它们存在的原因。

关于objection.js - 在 Objection.js 中,设置关系映射有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60512031/

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