从Firebase子级检索整数
我正在尝试在我的应用程序中实现交易计数器。我试图回忆写给孩子的最后一个整数,例如交易编号10。我可以成功地将手动输入的值写入firebase,但无法检索初始值 我正在使用下面的从Firebase子级检索整数,firebase,kotlin,firebase-realtime-database,Firebase,Kotlin,Firebase Realtime Database,我正在尝试在我的应用程序中实现交易计数器。我试图回忆写给孩子的最后一个整数,例如交易编号10。我可以成功地将手动输入的值写入firebase,但无法检索初始值 我正在使用下面的 dealnumRef = FirebaseDatabase.getInstance().reference val numberRef = dealnumRef.child("Total_deals").orderByChild("deal_number") val dealnumEventListener = ob
dealnumRef = FirebaseDatabase.getInstance().reference
val numberRef = dealnumRef.child("Total_deals").orderByChild("deal_number")
val dealnumEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (ds in dataSnapshot.children) {
val deal_num =
ds.child("deal_number_cars").getValue()
d("current deal number",deal_num.toString())
val new_deal_num = deal_num + 1
我遇到的问题是,目前,deal\u num
正在作为Any?
完成。如果我将String::class.java
插入getvalue()
中,它会将其作为字符串返回。但我需要将其作为一个整数
来计算新政数量
,因为新政数量
需要写入数据库,并将新政数量
增加到11作为示例
如何将deal\u num
提取为整数
我已经检查了可用的答案,但这些答案表示要转换为字符串。这在我的示例中不起作用,因为我需要增加交易编号,从而将其保持为整数。您可以通过将其类传递到
getValue(…)
中,从Firebase获得正确的类型
因此:
如果您在数据库中的
deal\u number\u cars
中存储一个数字,则该值将作为long
获得。对上述内容的完整更正如下:
dealnumRef = FirebaseDatabase.getInstance().reference
val numberRef = dealnumRef.child("Total_deals").orderByChild("deal_number_cars")
val dealnumEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (ds in dataSnapshot.children) {
val deal_num =
ds.getValue(Long::class.java)!!
d("current deal number",deal_num.toString())
val new_deal_num = deal_num + 1
您还必须确保将数据模型类设置为最长。我最初将其设置为Int,这产生了一个小问题,但很容易解决。这似乎仍然没有帮助,getValue()似乎不需要Long.class作为参数。指向显示错误ibb.co/2CF6R2G的图像的链接应该是
getValue(Long::class.java)
Hi@PeterHaddad,您的建议有所帮助,但似乎仍然无法提取值。查看日志中的错误,发现问题。我不得不删除对child的引用(“deal\u number\u cars”)。这将成功返回值。
dealnumRef = FirebaseDatabase.getInstance().reference
val numberRef = dealnumRef.child("Total_deals").orderByChild("deal_number_cars")
val dealnumEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (ds in dataSnapshot.children) {
val deal_num =
ds.getValue(Long::class.java)!!
d("current deal number",deal_num.toString())
val new_deal_num = deal_num + 1