如何在Firebase数据库中添加记录?

时间:2019-04-26 20:42:22

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

在我的应用程序中,我可以从相机中截取屏幕截图。然后,我将图像上传到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显示的内容: enter image description here

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

  • 摄像机流
    • 用户
    • userX
      • 认证
        • 令牌:“ xxx”
        • userId:“ xxxx”
      • 图片
        • image1:“ url1”
        • image2:“ url2”
        • image3:“ url3”
        • image4:“ url4”

但是,在images下进行每次推入/插入操作后,我得到的只有一条记录。问题是什么?谢谢。

1 个答案:

答案 0 :(得分:0)

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

  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");