Tag: google cloud firestore

从listView自动增量到Firestore文档

所以我有一个列表,可以填充我有一个微调项目。 然后我有一个文本框键入文档名称。 这两个都在工作 我需要的是我的代码自动检测我添加到列表中的项目数。 我不想手动添加它们。 我试过,但没有奏效 createListBtn.setOnClickListener { var item: String = "item" var i:Int = 1 var newItem: String = "item" + (Integer.parseInt(item.substring(1,item.length))+1) val list = HashMap<String, String>() list.put(newItem, kitList.toString()) db.collection("TestList").document(listNameTxt.text.toString()) .set(list as Map<String, Any>) .addOnSuccessListener { Log.d("TAG", "DocumentSnapshot successfully written!") } .addOnFailureListener { e -> Log.w("TAG1", "Error writing document") }

信息没有正确上传到firebase-firestore

所以,我有一个微调列表。 我希望每个列表都是我的一个集合中的一个文档。 编辑:当前版本部分工作 所以我试了一下 createListBtn.setOnClickListener { val list = HashMap<String, String>() list.put("item1", newKitList.toString()) db.collection("KitList").document(listNameTxt.text.toString()) .set(list as Map<String, Any>) .addOnSuccessListener { Log.d("TAG", "DocumentSnapshot successfully written!") } .addOnFailureListener { e -> Log.w("TAG1", "Error writing document") } 我想要做的是选择我的列表中的所有项目,并添加它们。 该集合已经存在,这是“KitList”,然后我尝试将文档名称传递给我放在我的文本字段的名称。 我错过了什么/错在哪里?

反序列化包含数组的Firestore文档的推荐方法是什么?

我试图获取包含数组的Firestore文档,但是,我无法使DocumentSnapshot.toObject方法在我添加数组后立即正常工作。 我不想使用集合,因为数组可能最多只包含1-2个项目。 java.lang.RuntimeException: Could not deserialize object. Failed to convert value of type com.google.android.gms.internal.zzegf to DocumentReference (found in field 'references.[0]') 以下是我的模特班 data class SomeModel( var references : ArrayList<DocumentReference> = ArrayList(0), var title : String? = null, var acronym : String? = null, var number : Long? = null ){ } 我的Firestore文档包含一个名为references的数组,其中包含一个DocumentReference 。 如果我从模型类中删除引用字段,对象反序列化就好了。

Firebase-firestore不能使用两个文档

所以我开始乱七八糟的,我有一个问题: 当我添加第二个文件到我的collection , spinner我已经停止加载信息和应用程序崩溃 。 db.collection("KitList").get().addOnSuccessListener { snapshot -> for (document in snapshot.documents) { val data = document.data val skipRope = data["rope"] as String spinnerArray.add(skipRope) val kettle = data["kettle"] as ArrayList<String> for (item in kettle) { val kettleWeight = "kettle $item" spinnerArray.add(kettleWeight) } } spinnerArrayAdapter.notifyDataSetChanged() } 我知道,最有可能是因为在我的代码我只是设置负载是从我的集合,但我试图做一些像 `db.collection("KitList").document(documentName).get().addOnSuccessListener { snapshot ->` 但它没有工作。

Firebase-Firestore不能同时加载2个文档的信息

早上好 所以,我可以从我的Firebase文档和集合中加载信息,在某种程度上… 当我的收藏有1个文件,一切都顺利。 当它有一个以上的文件,那么,应用程序中断。 所以,我有这个: db.collection("KitListCategorie").get().addOnSuccessListener { snapshot -> for (document1 in snapshot.documents) { val data1 = document1.data val weights = data1["categoryName"] as String val misc = data1["categoryName"] as String categorySpinnerArray.add(weights) categorySpinnerArray.add(misc) } categorySpinnerArrayAdapter.notifyDataSetChanged() } 对于此Firestore设置: https : //imgur.com/a/pmBcE 然后我得到这个错误: kotlin.TypeCastException: null cannot be cast to non-null type kotlin.String 我究竟做错了什么? 谢谢

Android Firestore微调不加载我的文档

所以,我分配了我的var微调控制器数组从我的文档在firestore中获取数据,但这是 我明白了 这是我目前的活动。 我可以让它工作,如果我分配字符串,但最终我想从我的文档加载数据,就像我现在要做的。 这是我的 建立。 任何原因为什么? 谢谢 var db = FirebaseFirestore.getInstance() var spinnerArray = arrayOf(db.collection("KitList") .get() .addOnCompleteListener { task -> if (task.isSuccessful) { for (document in task.result) { Log.d("weight05", document.id + " => " + document.data) } } else { Log.w("error", "Error getting documents.", task.exception) } }) var newKitList = mutableListOf<String>() override fun onCreate(savedInstanceState: […]

如何查询Firebase Firestore引用数据类型?

我正在使用Firestore 引用数据类型来存储对用户的引用,如下面的屏幕截图所示 用户参考 用户集合 当我试图查询这些数据时,我得到了一个ClassCastException (我试图将其转换为一个String )。 码 //.. this function reads data from DocumentSnapshot //.. and converts to an Organization private fun DocumentSnapshot.toOrganization(): Organization { //.. some code (this.data["members"] as ArrayList<HashMap<String, Any>>).map { toOrgMember(it) }) //.. more code } fun toOrgMember(map: Map<String, Any>): OrgMember { //map["user"] as String throws ClassCastException. Refer first screenshot return […]

Firestore安全规则基于地图值

如果允许用户根据用户的电子邮件地址在文档中读取文档,我想要存储它。 多个用户应该可以访问同一个文档。 根据文档 Firestore不允许查询阵列成员。 这就是为什么我要将用户的电子邮件地址存储在一个String-Bool Map中,并将电子邮件地址作为关键字。 对于下面的例子,我不使用电子邮件作为映射键,因为它已经不适用于基本的字符串。 数据库结构如下所示: lists list_1 id: String name: String owner: E-Mail type: String shared: test: true 所有安全规则在这里列出: service cloud.firestore { match /databases/{database}/documents { match /lists/{listId=**} { allow read: if resource.data.shared.test == true } } } 编辑:如果我使用match /lists/{listId}而不是match /lists/{listId=**} 我的理解是,如果map shared[test]值为true,则此安全规则应允许读取所有人。 为了完整起见:这是我正在使用的查询(Android上的Kotlin): collection.whereEqualTo("shared.test", true).get() .addOnCompleteListener(activity, { task -> if (task.isSuccessful) { […]

Firestore数据库规则:查询的权限

我试图查询基于字段的文档。 由于这个领域,我有权限阅读这个文件: match /lists/{list=**} { allow read: if resource.data.name == 'MyDocument' } 如果我试图直接检索这个文档,它是成功的(使用Kotlin的Android客户端): val doc = db.document("lists/acaa0247-eccd-4ff0-b986-7f8b6187e45f") doc.get().addOnCompleteListener { task -> if (task.isSuccessful) { // here it works println("This Works") } else { println("Failed") } } 但是当我查询它(或只是试图获取集合中的所有文档),我得到一个权限被拒绝的异常: val collection = db.collection("lists") collection.get().addOnCompleteListener(activity, { task -> if (task.isSuccessful) { println("Should work") } else { // Here […]

如何使用kotlin数据类获取Firestore文档的文档ID

我有kotlin数据类 data class Client( val name: String = "", val email: String = "", val phone: String ="") { constructor():this("","","")} 我已经有Firestore将数据填充到类中,但是我不知道如何将文档ID导入到数据类中,而不必将其设置在文档中。 这可能吗?