数据仅存储在list/0中。 我想要多个数据存储在用户的电子邮件中。
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
FirebaseFirestore db = FirebaseFirestore.getInstance();
final ArrayList<AddDayInfo> list = new ArrayList<>();
final Map<String,Object> docData = new HashMap<>();
AddDayInfo memberInfo = new AddDayInfo(Type,Day,Name,Time1,Time2,Time3);
list.add(memberInfo);
for(int i=0;i<list.size();i++) {
if (user != null) {
docData.put("Day_M", list);
db.collection("day").document(user.getEmail()).set(docData, SetOptions.merge())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
startToast("Okay. Add Data..");
myStartActivity(Add_Main_Activity.class);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
startToast("Failed...");
}
});
}
}
我想添加像这张图这样的数据:
要将项添加到Firestore中的数组,您有两个选项:
FieldValue.ArrayUnion
,确保数组中只有唯一的元素。 这两个选项之间的选择取决于您的数据的含义,我预计您实际上需要第二个(更多的)选项。
我们将从FieldValue.ArrayUnion
开始,只是为了向您展示如何执行该操作:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference docRef = db.collection("day").document(user.getEmail())
AddDayInfo memberInfo = new AddDayInfo(Type,Day,Name,Time1,Time2,Time3);
docRef.update("messages", FieldValue.arrayUnion(memberInfo))...
如果您总是希望将消息添加到数组的末尾,即使该消息的另一个副本已经存在,您也需要:
由于我们使用当前值来确定新值,因此最好使用一个事务:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference docRef = db.collection("day").document(user.getEmail())
AddDayInfo memberInfo = new AddDayInfo(Type,Day,Name,Time1,Time2,Time3);
db.runTransaction(new Transaction.Function<Void>() {
@Override
public Void apply(Transaction transaction) throws FirebaseFirestoreException {
DocumentSnapshot snapshot = transaction.get(docRef);
List messages = snapshot.get("messages");
messages.add(memberInfo)
transaction.update(docRef, "messages", messages);
// Success
return null;
}
})