angular - 如何使用 Firestore 和 Angular 从数组中查询对象
问题描述
我正在尝试从 Firestore 查询一个对象, uid
因此我可以将以下对象作为值返回。
我试图制作一个函数来获取对象“香蕉”
getFruit(fruitUid: string, basketUid: string): Promise<any> {
const basketRef = this.afs.doc(`basket/${basketUid}`).ref;
return this.afs.firestore.runTransaction((ts) => {
return ts.get(basketUid).then((sfDoc) => {
return sfDoc.data().fruits
.filter(fruit => fruit.uid === fruitUid);
});
});
}
现在我收到以下错误:FirebaseError: Every document read in a transaction must also be written.
这是数据库的样子:
fruits: [
{
uid: '123ABC',
name: 'Banana'
},
{
uid: 'ABC123',
name: 'Apple'
]
createdAt: 2019-04-20
有没有办法通过指定来获取该特定对象,uid
以便我可以fruit
从数组中返回一个特定对象fruits
?
解决方案
对于单个文档检索,您不需要事务:
getFruit(fruitUid: string, basketUid: string): Promise<any> {
const basketRef = this.afs.doc(`basket/${basketUid}`);
return basketRef.get().then((sfDoc) => {
return sfDoc.data().fruits
.filter(fruit => fruit.uid === fruitUid);
});
}
推荐阅读
- python - 对象在 Django 中不可下标
- sql - 与 concatenate 一起使用时,max() 是否仍然提供最新记录?
- c++ - 标准字符串 rfind 未找到期间
- php - 大量数据时PHP脚本内部服务器错误
- php - Voyager:“@php artisan package:discover --ansi 处理返回的 post-autoload-dump 事件,错误代码为 1”
- html - css 文件不会加载到我的 html 网页中
- python - 修改 soft-max 函数以在列表中的最小值上给出最高概率的最佳方法是什么?
- vb.net - VB.NET:搜索列表视图并删除不匹配的项目
- sas - 如何连接 SAS 多个宏变量
- c++ - 即使在文件中找到密码,线程也不会停止运行