【问题标题】:How to update a field inside a list in firebase?如何更新firebase列表中的字段?
【发布时间】:2020-08-02 20:02:50
【问题描述】:

我在 Firebase 中有这个集合

我尝试修改特定主题的地图注释中的值,但我无法做到,我尝试了多种方式均未成功 非常感谢您的帮助。

我以这种方式获取数据,但我无法更新该数据。

this.firestore.collection('school').doc('254')
            .get().toPromise().then(doc => {
            if (doc.exists) {
                const student = doc.data().class.find(value => {
                    return value.name === 'john';
                });
                console.log('student', student);
                /*
                Here edit student.notes.math = newValue
                 */
            }
        });

PD:我目前正在使用 Angular 7。

【问题讨论】:

  • 你尝试了什么?
  • 我可以得到我想更新的数据,但是我不能更新那个数据。
  • 感谢您添加该代码,这有助于理解您所做的工作。如果道格的回答有帮助,请务必在此处注明。如果 Doug 的回答还没有帮助,请解释/展示您所做的与他所展示的有何不同。

标签: javascript firebase google-cloud-firestore


【解决方案1】:

我没有看到您的代码尝试更新您找到的文档。更改内存中的数据不会更改文档的内容。您将不得不编写额外的代码来使用您对类字段的更改来更新文档。

见:

this.firestore
    .collection('school')
    .doc('254')
    .update("class", NEW_FIELD_CONTENTS)

您需要提供更新后的类字段的全部内容。 Firestore 没有任何操作可让您更新特定索引处的数组项。

【讨论】:

  • 顺便提一下,update只接受一个参数,所以我是这样传的 .update({class: NEW_FIELD_CONTENTS}) ..谢谢
  • 底层 JS SDK 接受可选的键/值对作为不同的参数。我想 Angular 的包装器也可以,但你是说事实并非如此?
猜你喜欢
  • 2023-01-17
  • 2021-12-19
  • 2021-07-02
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多