【问题标题】:Having trouble adding a document to a collection of a specific user in Firestore在 Firestore 中将文档添加到特定用户的集合时遇到问题
【发布时间】:2021-10-17 14:03:59
【问题描述】:

我正在尝试允许登录用户从 recyclerview 中选择一部电影,这会将他们带到一个新活动中,在那里他们可以选择一个按钮,允许他们将电影保存到他们的观看列表中电影。

我希望按钮选择添加一个包含电影信息的电影对象,作为电影子集合的文档,该电影子集合位于用户 ID 的文档中,即在用户集合中。当我按下“添加电影”按钮时,下面的代码会崩溃。

    auth = FirebaseAuth.getInstance()


    val film: Film? = intent.getParcelableExtra("EXTRA_FILM")

    val title = film?.title
    val year = film?.year.toString()
    val genre = film?.genre.toString()
    val rating = film?.rating.toString()
    val runtime = film?.runtime.toString()
    val votes = film?.votes.toString()

    val movieInfo = "$title ($year) \n\n $genre \n\n Runtime: $runtime \n\n Rating: $rating ($votes Votes) "

    binding.tvTitle.text = movieInfo

    binding.btnAddMovie.setOnClickListener {
        if (film != null) {
            addToWatched(film)
        }
    }

}

//db has been initialized as type FirebaseFirestore
fun addToWatched(film: Film){
    auth.currentUser?.let { db.collection("users").document(it.uid)
        .collection("movies").add(film) }

【问题讨论】:

  • 您好,您是否在 IDE 中检查 日志 以查看错误是什么?此外,您是否尝试检查用户是否登录,或者您已经检查过并且您只需要将电影添加到电影集合中?
  • @profiile_samir 我没有检查日志(我是 android studio 和编码的新手),但是使用 logcat 我能够找到导致我的应用程序崩溃的致命错误,所以谢谢你!
  • 没什么,乐于助人!另一个快速提示是,您也可以尝试使用 breakpoints 进行调试。编码愉快!

标签: firebase kotlin authentication google-cloud-firestore


【解决方案1】:

一旦我检查了 logcat,我发现我混淆了初始化变量和删除变量,并忘记了将 db 变量实际初始化为一个值。所以以下工作:

fun addToWatched(film: Film){
    db = FirebaseFirestore.getInstance()
    auth.currentUser?.let { db.collection("users").document(it.uid)
        .collection("movies").add(film) }
}

【讨论】:

    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2019-06-05
    • 2020-06-28
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多