无法在Firestore子集合中设置数据

时间:2019-01-24 15:58:11

标签: android firebase kotlin google-cloud-firestore

在Cloud Firestore上上传数据时

    lateinit var db: DocumentReference

    db = FirebaseFirestore.getInstance().document("users/${mAuth.uid}")

    val items=HashMap<String,Any>()
    items["w"] = "t"
    db.set(items).addOnSuccessListener {
            Toast.makeText(this,"Data updated successfully", Toast.LENGTH_LONG).show()
        }.addOnFailureListener{
            Toast.makeText(this,"Data upload failed",Toast.LENGTH_LONG).show()
        }

可以,但是

    lateinit var db: DocumentReference

    db = FirebaseFirestore.getInstance().document("users/${mAuth.uid}/othercollection/otherdocument")

    val items=HashMap<String,Any>()
    items["w"] = "t"
    db.set(items).addOnSuccessListener {
            Toast.makeText(this,"Data updated successfully", Toast.LENGTH_LONG).show()
        }.addOnFailureListener{
            Toast.makeText(this,"Data upload failed",Toast.LENGTH_LONG).show()
        }

失败。即。它会显示“数据上传失败”。

其他声明文档路径的方法也失败,.collection()。document()。collection()。document().....也失败

2 个答案:

答案 0 :(得分:0)

在这种情况下,您最需要执行的操作是记录来自addOnFailureListener的消息,该消息告诉您所有内容。最有可能是与权限不足有关的问题。要解决此问题,请设置与您正在执行的查询相对应的security rules

答案 1 :(得分:0)

该错误是权限不足。我使用的是旧项目中未为嵌套文档定义的安全规则。更改后问题得以解决。

供他人参考,在更改项目应用程序或添加新应用程序时,请务必当心,请确保您检查了资源,以使其适用于链接到项目的新应用程序。