新手到Firebase DB。以下是我的DB的结构:
Cart-List
|
|-UserCarts
|
|- 2020-11-11 ( using dateformat :yyyy-MM-dd)
| |
| | -items
| |- productCode
| |- price
|- FirebaseDatabase.getInstance().getReference().child("Cart-List").child("UserCarts")
在添加此新节点之前,是否有一种方法可以检查是否创建了此节点?
这将使我能够轻松地按日期查找项目。也许这会减少计算时间,从而减少费用?
谢谢
发布于 2020-11-11 14:51:25
在使用以下引用时:
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中的键是始终是字符串。如果您想要存储日期,则将其存储为时间戳更为方便。因此,添加时间戳作为对象的属性会更有帮助,正如我在下面的文章中的回答所解释的那样:
在添加这个新节点之前,是否有一种方法来检查是否创建了此节点?
如果要检查节点是否存在,则需要附加侦听器,如以下代码行所示:
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);https://stackoverflow.com/questions/64786806
复制相似问题