【问题标题】:Firestore update list of object [duplicate]对象的Firestore更新列表[重复]
【发布时间】:2018-04-02 13:16:30
【问题描述】:

我正在尝试使用 Firestore。

我有一个集合,其中包含用户列表

    public class User {

    private String mail;
    private String username;

    public User() {
    }

    public User(String mail, String username) {
        this.mail = mail;
        this.username = username;
    }

    public String getMail() {
        return mail;
    }

    public String getUsername() {
        return username;
    }
}

我想更新这个列表,所以我试过了:

List<User> list = new ArrayList<>();
        list.add(new User("mail@gmail.com", "foo"));
        reference.update("users", list)
                .addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        Log.d(TAG, "DocumentSnapshot successfully updated!");
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.w(TAG, "Error updating document", e);
                    }
                });
    }

但我有一个例外:

java.lang.IllegalArgumentException:无效数据。不支持的类型:my.package.name.models.User

如何使用 Firestore 更新对象列表?

【问题讨论】:

  • 您无法对 Firestore 中的数组字段执行列表操作(任何语言)。您必须读取数组,在本地对其进行修改,然后将数组写回。

标签: java android google-cloud-firestore


【解决方案1】:

首先,因为documented更新不接受List

另外,documented 在这里,您可以使用WriteBatch 将多个写入操作作为一个批处理执行,其中包含set()update()delete() 操作的任意组合。

【讨论】:

    猜你喜欢
    • 2020-10-05
    • 2019-02-21
    • 2018-01-28
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    相关资源
    最近更新 更多