gpt4 book ai didi

firebase - 如何在 Firestore 中显示 "populate"?

转载 作者:行者123 更新时间:2023-12-04 16:27:32 26 4
gpt4 key购买 nike

我是 Firestore 的新手,我正在尝试将 MongoDB 项目迁移到 Firestore。我有以下问题。我的数据结构是这样的:

/products
'A': {name: 'Product A', price: 1},
'B': {name: 'Product B', price: 2}

/profiles
'1': {name: 'John', purchases: [ {product: 'A', quantity: 1} ] }

我有一组产品和一组配置文件。这些配置文件有一个购买数组,每个购买都有一个对相应产品的对象引用和一个数量。使用 MongoDb,我可以做到这一点:

const profiles = await Profiles.findById('1').populate('purchases.product', 'name price');

所以我可以得到以下对象:

{
_id: '1',
name: 'John',
purchases: [
{
{
_id: 'A',
name: 'Product A',
price: 1,
},
quantity: 1,
}
]
}

所以通过一个查询我可以获取所有购买,我不必遍历所有购买并通过 id 获取它们。如何使用 Firestore 实现相同的性能?此外,如果此数据模型不适用于 Firestore,请告诉我。

最佳答案

您正在寻找的是某种“内部连接”,Firestore 本身并不支持这种方式。您必须查询文档,等待 firestore 返回值,遍历结果以查询嵌入式文档,这非常繁琐且容易出错。Firestore 是一个非常好的选择,具体取决于您的数据结构,但不幸的是,您将在查询方面遭受重创,尤其是从像 mongo 这样的丰富数据库迁移。

旁注 我的公司因为这个问题将一些数据从firestore迁移到mongodb Atlas,我强烈推荐Mongodb Atlas和Sticth,它们提供了类似于firestore的功能,同时保持了mongo的多功能性.如果它有所作为,它还具有(尽管在撰写本文时处于 Beta 版)GraphQl 支持。

结论:不支持连接。但是,您可以使用聪明的 rxjs 来解决这个问题,特别是 CombineLatest。继承人 good answer让你开始

关于firebase - 如何在 Firestore 中显示 "populate"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60379754/

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