查询Firestore数据并将一个字段添加到与查询匹配的所有文档中

卡尔特·斯里尼瓦桑(Karthic Srinivasan)

我正在构建一个用于出售书籍的Android应用。我的用户可以为二手书发布广告并出售。我计划添加一个功能,我的用户可以选择匿名。将有一个名为name的复选框Make me anonymous如果用户选中该框,则其他人将看不到他们的电话号码和姓名。仅通用名称应可见。

现在的问题是,我想anonymous = true在用户上传的每个广告文档中添加一个条目

我想查询用户放置的广告并添加一个字段anonymous = true我想做如下的事情:

 final CheckBox anonymousCB = findViewById(R.id.anonymousCB);
    anonymousCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (anonymousCB.isChecked()){
                WriteBatch batch = firestore.batch();
                DocumentReference sfRef = firestore.collection("books").whereEqualTo(uid,uid);
                batch.update(sfRef, "anonymous", "true");
            }
        }
    });

但是我无法进行查询并将字段插入与查询匹配的所有文档中。有什么更好的方法吗?

亚历克斯·莫莫

有什么更好的方法吗?

就在这里。要解决此问题,请在onCheckedChanged()method内部使用以下代码行

Query sfRef = firestore.collection("books").whereEqualTo(uid, uid);
sfRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            List<String> list = new ArrayList<>();
            for (DocumentSnapshot document : task.getResult()) {
                list.add(document.getId());
            }

            for (String id : list) {
                firestore.collection("books").document(id).update("anonymous", true).addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        Log.d(TAG, "anonymous field successfully updated!");
                    }
                });
            }
        }
    }
});

此代码的结果是将anonymous属性添加到所有book对象并将其设置为true请注意,我使用的是布尔值,true不是您在代码中使用的String true。这样更方便使用。

附言:如果您正在为书籍使用模型课程,请同时参阅本帖子中的答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Firebase Firestore:查询并获取在其中一个字段中包含查询值的文档

如何从窗体将数组添加在一起并将其添加到数据库的一个字段中?

在 MongoDB 中,有一个对象列表,通过查询同一对象的另一个字段的值,根据对象的一个字段的值对所有文档进行排序

遍历 Firestore 集合中的所有文档,并将这些文档添加到 Flutter 中的另一个集合中

elasticsearch动态查询-向返回的每个文档中添加另一个字段

firebase / 我如何从 firestore / javascript 中的所有文档中获取一个字段

如何将一个数组字段的长度添加到Mongodb文档中的另一个字段中

mongodb在从另一个字段派生的所有文档中添加字段

将一个文档添加到集合中,该文档是MongoDB中一个字段的累积

如何在Firestore中使用POJO更新所有文档中的一个字段?

查询和/或函数将所有类型的一个字段中的数据子集化,并在另一字段中进行计算

将另一个字段从字段添加到验证器中

Django 在查询集中添加一个字段

如何添加到不同的字段值并将其存储在弹性搜索python中的另一个字段中(弹性搜索字段操作)

在Solr中,如何获取所有文档的一个字段列表(文档ID)?

$ sum数组中的一个字段-查询结果文档是否超过某个值

如何使用PyMongo有条件地复制一个集合中的字段并将其添加到MongoDB中的另一个字段?

如何在查询中添加基于另一个字段的字段

如何查询在另一个字段中与该行的值共享相同值的所有值?

从数据库中查询,该数据库可能具有一个字段的多个值

同一个表的所有记录由一个字段关联但由另一个字段查询 - sqlserver

如何查找一个字段的值与另一个字段的值匹配的所有文档

Firestore 根据 2 个字段中的任何一个中的开头查询文档

SOLR:将2个字段复制到另一个字段并将过滤器添加到该新字段

是否可以在GraphQL查询的最终响应中添加另一个字段?

当一个字段被请求为另一字段的根字段时,如何在查询中获取mongodb的所有子字段?

Solr查询多个字段,一个字段不需要完全匹配

具有一个字段的最新值并保留其他字段的MongoDB查询文档

对遍历数据结构的 linq 查询中的一个字段求和