【问题标题】:Modify the value of a single element in an array - firestore修改数组中单个元素的值 - firestore
【发布时间】:2019-10-10 09:59:53
【问题描述】:

我有以下数据结构设置:

users
|-name
|-id

businesses
|-name
|-id
|-owners
||[0]
||-name
||-id
||[1]
||-name
||-id

reviews
|-id
|-description
|-authorId
|-authorName

根据视频和博客文章,我知道我可以使用 2018 年的新数组功能删除元素和添加元素。有没有办法将特定引用传递给更新方法以更新特定值,例如所有者[1].name?

观看有关多路径更新的视频,阅读有关数组的博客文章,四处搜索进行多路径更新的示例,尝试阅读有关 StackOverflow 上更新数组的不同方法。

    db.collection("businesses").whereArrayContains("owners",userId).get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                        DocumentReference ref =db.collection("businesses").document(documentSnapshot.getId());
                        batch.update(ref, "Name", editText.getText().toString().trim());
                    }

【问题讨论】:

    标签: java android arrays firebase google-cloud-firestore


    【解决方案1】:

    不,本机数组操作仅对列表类型字段中的整个项目进行操作。您不能调用数组中对象的特定属性。如果要修改列表中对象的属性,则必须阅读文档,在代码中修改列表,然后将整个字段更新回文档。您将无法通过单个操作来执行此操作。

    【讨论】:

    • 谢谢道格,这很有帮助。所以,在这个例子中,我会读出业务对象,进行修改,然后将修改后的对象更新/合并回 Firestore?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 2013-01-21
    相关资源
    最近更新 更多