我们如何从 MikroORM 中的嵌套表中过滤字段
How can we filter fields from nested tables in MikroORM
我 运行 遇到了一些困难,试图弄清楚如何 return 从嵌套连接中选择字段。
所以在我的实体中,我有一个“餐厅” 与“产品”有 1:M 关系。 “产品”与“类别”有 M:M 关系。“类别”与“菜单”有 M:M 关系。
现在我正在使用此代码段 return 填充了类别和菜单的所有产品:
const place = await this.placeRepo.findOne(placeID, {
populate: ['products.categories.menus'],
});
问题是它 return 包含产品、类别和菜单的所有字段,这是非常不必要的。基本上只有 uuid & title 是必需的。所以我想 return 这样的数据:
[
{
"uuid": "tCj6soMp6YWcJosTxvjJ1",
"title": "Burger 2",
"categories": [
{
"uuid": "JUwta7kMG1-DUARA3Tnan",
"title": "Pizza",
"menus": [
{
"uuid": "tohzpXtkAN-mW646sphE1",
"titleOfMenu": "Lunch",
}
]
}
]
},
]
例如,我已经尝试过此代码段来确定产品 return 的字段,但它不起作用,我不知道如何解决它:
const place = await this.placeRepo.findOne(placeID, {
populate: ['products.categories.menus'],
fields: ['products', 'products.title']
});
抛出以下错误:“类型错误:无法读取未定义的 属性‘0’”
如何 return 从嵌套的填充实体中选择字段?我们是否必须改用查询构建器,还是我在这里遗漏了一些简单的东西?
更新到版本 5.0.2 并将代码更改为此!实际上甚至不需要指定“填充”,因为 mikro orm 会自动为您填充它们。
const place = await this.placeRepo.findOne(placeID, {
fields: [
'products',
'products.title',
'products.categories.title',
'products.categories.menus',
'products.categories.menus.titleOfMenu',
],
});
我 运行 遇到了一些困难,试图弄清楚如何 return 从嵌套连接中选择字段。
所以在我的实体中,我有一个“餐厅” 与“产品”有 1:M 关系。 “产品”与“类别”有 M:M 关系。“类别”与“菜单”有 M:M 关系。
现在我正在使用此代码段 return 填充了类别和菜单的所有产品:
const place = await this.placeRepo.findOne(placeID, {
populate: ['products.categories.menus'],
});
问题是它 return 包含产品、类别和菜单的所有字段,这是非常不必要的。基本上只有 uuid & title 是必需的。所以我想 return 这样的数据:
[
{
"uuid": "tCj6soMp6YWcJosTxvjJ1",
"title": "Burger 2",
"categories": [
{
"uuid": "JUwta7kMG1-DUARA3Tnan",
"title": "Pizza",
"menus": [
{
"uuid": "tohzpXtkAN-mW646sphE1",
"titleOfMenu": "Lunch",
}
]
}
]
},
]
例如,我已经尝试过此代码段来确定产品 return 的字段,但它不起作用,我不知道如何解决它:
const place = await this.placeRepo.findOne(placeID, {
populate: ['products.categories.menus'],
fields: ['products', 'products.title']
});
抛出以下错误:“类型错误:无法读取未定义的 属性‘0’”
如何 return 从嵌套的填充实体中选择字段?我们是否必须改用查询构建器,还是我在这里遗漏了一些简单的东西?
更新到版本 5.0.2 并将代码更改为此!实际上甚至不需要指定“填充”,因为 mikro orm 会自动为您填充它们。
const place = await this.placeRepo.findOne(placeID, {
fields: [
'products',
'products.title',
'products.categories.title',
'products.categories.menus',
'products.categories.menus.titleOfMenu',
],
});