我需要将当前日期与其他数据一起添加到 firebase Realtime 数据库,并在 kotlin android 中检索所有带有日期的数据

Posted

技术标签:

【中文标题】我需要将当前日期与其他数据一起添加到 firebase Realtime 数据库,并在 kotlin android 中检索所有带有日期的数据【英文标题】:I need to add current date to firebase Realtime database with other data and retrieve all data with date in kotlin android 【发布时间】:2021-11-23 17:26:30 【问题描述】:

我尝试将一些数据添加到 Firebase 实时数据库。有用。此外,我成功检索了这些数据。但是现在我需要将当前日期与这些数据一起添加为新数据值,然后使用其他数据检索该数据。我知道,我必须用新的数据类型更新我的数据类,但问题是我如何生成当前数据以及如何将其保存在数据库中(数据类型)。我在下面附上了我的数据添加代码,检索代码。

数据添加代码:

  val notificstionRef = rootRef.child("Notifications")
                val eventListener1: ValueEventListener = object : ValueEventListener 
                    override fun onDataChange(dataSnapshot: DataSnapshot) 
                            val recharge = amountText.getText().toString()
                            val title = "Recharge Amount"
                            val notifications = Notifications(sessionId,title,recharge)
                            ref1.child(sessionId).setValue(notifications).addOnSuccessListener 
                             .addOnFailureListener
                            
                    
                    override fun onCancelled(databaseError: DatabaseError) 
                    
                
                notificstionRef.addListenerForSingleValueEvent(eventListener1)

数据检索代码

val rootRef = FirebaseDatabase.getInstance().reference
        val userRef = rootRef.child("Notifications").child(sessionId)
        val valueEventListener = object : ValueEventListener 
            override fun onDataChange(dataSnapshot: DataSnapshot) 

                val title = dataSnapshot.child("title").getValue(String::class.java)
                val body = dataSnapshot.child("body").getValue(String::class.java)
                title1Notification.setText(title)
                body1Notification.setText(body)

            

            override fun onCancelled(error: DatabaseError) 
                Log.d("TAG", error.getMessage())

            
        
        userRef.addListenerForSingleValueEvent(valueEventListener)

数据类

data class Notifications(val emailA: String, val title: String, val body: String)

你能帮我解决这个问题吗?我是这个领域的新手(学生)

已编辑

dependencies 
    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'com.android.support:support-annotations:28.0.0'
    implementation 'androidx.annotation:annotation:1.2.0'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    implementation 'com.jakewharton.timber:timber:4.7.1'
    implementation 'com.google.android.gms:play-services-maps:17.0.1'
    implementation ('com.google.zxing:core:3.3.3')
    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
    implementation 'com.google.firebase:firebase-database-ktx'
    implementation 'com.google.firebase:firebase-analytics-ktx'
    implementation platform('com.google.firebase:firebase-bom:28.4.1')
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

Error Screenshot

【问题讨论】:

这段代码中到底有什么不符合您的预期?告诉我们共享代码有什么问题。你有什么错误吗? @AlexMamo 没有错误。这是我用来添加数据和检索数据的代码。我需要在这段代码中添加current date,但我不知道如何添加它。所以为了方便,我附上了我的代码。这样您就可以清楚地了解我需要什么? 所以你只想在实时数据库中添加一个时间戳 @AlexMamo 是的,还有所有其他细节 在这种情况下,请向我们展示您的Notifications 课程的内容。 【参考方案1】:

如果您想在Notifications 类型的对象中添加时间戳类型字段,请在您的类中定义以下字段:

data class Notifications(
    val emailA: String? = null,
    val title: String? = null,
    val body: String? = null,
    val timestamp: Map<String, String>? = null
)

如您所见,新字段的类型为 Map。还要记住,当您设置 TIMESTAMP 时,您将其设置为 Map,但是当您检索它时,您将其检索为 Long。现在,当你创建一个对象时,传递第四个参数ServerValue.TIMESTAMP)

或者,您可以创建地图并使用:

map.put("timestamp", ServerValue.TIMESTAMP);

【讨论】:

当我添加 @ServerTimestamp 它标记为红色并且必须在数据类上创建 annotation class ServerTimestamp 这个。但还是不行。 你确定你有正确的依赖关系吗?请编辑您的问题并添加它们。最终,错误的屏幕截图也可能会有所帮助。 没有报错,但不添加数据也得放annotation class项目依赖项已更新。 现在可以了,非常感谢。 好的,非常感谢

以上是关于我需要将当前日期与其他数据一起添加到 firebase Realtime 数据库,并在 kotlin android 中检索所有带有日期的数据的主要内容,如果未能解决你的问题,请参考以下文章

将 STUFF 与 DATE 一起使用

将 JQuery 的日期选择器与引导程序一起使用

使用存储过程将自动日期字段添加到 MYSQL 数据库

Iphone:如何将年份添加到当前日期并将其作为字符串返回,格式为 2011-11-20

如何将 geom_rect 与日期一起使用?

将修改后的文件日期与批处理文件中的当前日期进行比较