作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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/
我是一名优秀的程序员,十分优秀!