从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

我正在尝试在我的应用程序中实现交易计数器。我试图回忆写给孩子的最后一个整数,例如交易编号10。我可以成功地将手动输入的值写入firebase,但无法检索初始值

我正在使用下面的

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