我在Firestore中的一个文档中将数组存储为FieldValue。现在,我要更新其元素值之一。根据文档,我可以使用arrayRemove或arrayUnion函数从数组中删除元素,但是我没有看到任何方法来更新element的值。有什么方法可以帮助我更新元素的值。
在这里,我将数组存储在文档的“患者”字段中。此数组代表患者列表。查看元素的第0个位置。状态的值为“当前”。我想将此更新为“已处理”。无论如何,我能做到吗。
我还可以根据状态键上的值查询数组的元素。
答案 0 :(得分:3)
根据文档,我可以使用arrayRemove或arrayUnion函数从数组中删除元素。
您无法使用这些功能之一在包含对象的数组中添加或删除元素。为了能够使用这些功能,您的数组应包含例如文字字符串。这样,您可以使用import { Component } from '@angular/core';
// This tells TypeScript that you know this will be available globally during runtime.
// Unfortunately, RSSParser has no TS Declarations, so you have to use any or make a more concrete type yourself
declare const RSSParser:any;
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
title:string = '';
items:Array<any> = [];
constructor() {
const CORS_PROXY = "https://cors-anywhere.herokuapp.com/"
let parser = new RSSParser();
parser.parseURL(CORS_PROXY + 'https://www.reddit.com/.rss', (err, feed) => {
if (err) throw err;
console.log(feed);
this.title = feed.title;
this.items = feed.items;
})
}
}
或arrayRemove()
函数添加或删除其中一个元素。
我没有看到任何更新元素值的方法。
没有更新方法。 arrayUnion()
方法仅在不存在的情况下才会在数组中添加新元素。如果要更新元素,则必须先从数组中将其删除,然后添加新元素。对于字符串,也可以使用,对于对象,不。
有什么办法可以帮助我更新元素的值。
是的,您可以通过两种方式实现这一目标。第一个方法是获取整个文档,将arrayUnion()
属性作为哈希表列表,遍历其元素,进行所需的更改并写回文档。第二个方法是将该数组转换为一个子集合,每个患者将成为一个文档。这样,您可以使用相应的功能简单地更新添加或删除文档。
我还有什么方法可以根据状态键上的值查询数组的元素。
使用您当前的文档结构,不。如果要基于特定属性的值查询用户的患者,则绝对应该使用第二种方法。您无法使用实际的方案来实现这一目标。