【问题标题】:How to add a record into Firebase database? [duplicate]如何将记录添加到 Firebase 数据库中? [复制]
【发布时间】:2019-09-16 09:15:37
【问题描述】:

在我的应用程序中,我可以从我的相机中截取屏幕截图。然后我将图像上传到 Firebase 存储并获得下载链接。现在,我想将此链接添加到我的数据库中。我可以通过以下代码做到这一点:

fun storeImageUrlToFBDatabase(userId: String, cameraName: String, imageUrl: String) {
    val map = mapOf(cameraName to imageUrl)
    val ref = getFBDatabaseReference().getReference("users/$userId/images")
    ref.setValue(map)
        .addOnSuccessListener {
            Logger.d("$FB_DATABASE_TAG, Write was successful, $it")
        }
        .addOnFailureListener {
            Logger.e("$FB_DATABASE_TAG, Write failed: $it")
        }
}

这是 Firebase 显示的内容:

但是,问题是images 下的当前项目将被我正在推送的新项目替换。我的期望是这样的:

  • 相机流
    • 用户
    • 用户X
      • 认证
        • 令牌:“xxx”
        • 用户 ID:“xxxx”
      • 图片
        • image1:“url1”
        • image2:“url2”
        • image3:“url3”
        • image4:“url4”

但是,在images 下每次推送/插入后我得到的只是一个项目/记录。有什么问题?

【问题讨论】:

  • @YashKrishanVerma,你是绝对正确的。非常感谢。
  • 当然,一切顺利。 B-)

标签: android firebase firebase-realtime-database kotlin firebase-storage


【解决方案1】:

您需要使用键值来存储新链接。这可以通过两种方式完成:

  1. 跟踪数据库中的当前图像序列,然后推送下一个值,例如:

val ref = getFBDatabaseReference().getReference("users/$userId/images");

//you need to find next xth image somehow

ref.child('imagex').setValue("map");
  1. 只需将链接推送到 DB 生成的随机密钥即可:

val ref = getFBDatabaseReference().getReference("users/$userId/images");

val newRef = ref.push();
newRef.setValue("map");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多