当您使用以下参考时:
FirebaseDatabase.getInstance().getReference().child("Cart-List").child("UserCarts")
这意味着您创建的架构如下所示:
Firebase-root
|
--- Cart-List
|
--- UserCarts
如果您需要在树的较低级别写入数据,则需要再添加几个.child() 调用。假设您要在items 节点下写入数据,则引用应如下所示:
val itemsRef = FirebaseDatabase.getInstance().getReference()
.child("Cart-List")
.child("UserCarts")
.child("2020-11-11")
.child("items");
要记住的一点是,Firebase 中的键是always 字符串。如果要存储日期,将其存储为时间戳会更方便。因此,将时间戳添加为对象的属性会更有帮助,正如我在以下帖子中的回答中所解释的那样:
在添加这个新节点之前,有没有办法检查这个节点是否被创建?
如果要检查节点是否存在,则需要附加一个监听器,如下代码行:
val valueEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
if(dataSnapshot.exists()) {
//Do what you need to do
}
}
override fun onCancelled(databaseError: DatabaseError) {
Log.d("TAG", databaseError.getMessage()) //Don't ignore potential errors!
}
}
itemsRef.addListenerForSingleValueEvent(valueEventListener)
对于 Java 用户:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
//Do what you need to do
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
itemsRef.addListenerForSingleValueEvent(valueEventListener);