我需要将当前日期与其他数据一起添加到 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
)
如您所见,新字段的类型为 MapServerValue.TIMESTAMP)
。
或者,您可以创建地图并使用:
map.put("timestamp", ServerValue.TIMESTAMP);
【讨论】:
当我添加@ServerTimestamp
它标记为红色并且必须在数据类上创建 annotation class ServerTimestamp
这个。但还是不行。
你确定你有正确的依赖关系吗?请编辑您的问题并添加它们。最终,错误的屏幕截图也可能会有所帮助。
没有报错,但不添加数据也得放annotation class
。 项目依赖项已更新。
现在可以了,非常感谢。
好的,非常感谢以上是关于我需要将当前日期与其他数据一起添加到 firebase Realtime 数据库,并在 kotlin android 中检索所有带有日期的数据的主要内容,如果未能解决你的问题,请参考以下文章