我正在构建一个用于出售书籍的Android应用。我的用户可以为二手书发布广告并出售。我打算添加一个功能,我的用户可以选择匿名。将出现一个名为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");
}
}
});
但是我无法进行查询并将字段插入与查询匹配的所有文档中。有更好的方法吗?
答案 0 :(得分:0)
还有更好的方法吗?
是的,有。要解决此问题,请在explicit B( std::string s )
方法内使用以下代码行:
onCheckedChanged()
此代码的结果是将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,就像您在代码中使用的那样。这样使用起来更方便。
建议。如果您正在为图书使用模型课程,请同时从此 post 中查看我的答案。