如何在flutter中使用特定路径向firestore写入/读取数据



我想在我的应用程序中使用用户选择的动态路径来访问/写入数据到我的数据库。有点像用户可以输入的文件路径,例如:"users/mike/age"使用这个字符串,我需要获取以及写入数据到数据库中的路径。这有可能吗?

有点奇怪,但是你可以拆分字符串然后用firebase path重构。

String pathStr = 'users/mike/age';
List<String> list = pathStr.split('/'); //now we have a list with the fields.
var ref;
switch (list.length) {
case 0:
break;
case 1:
ref = FirebaseFirestore.instance.collection(list[0]);
break;
case 2:
ref = FirebaseFirestore.instance.collection(list[0]).doc(list[1]);
break;  
case 3:
ref = FirebaseFirestore.instance.collection(list[0]).doc(list[1]).collection(list[2]);
break;    
case 4:
ref = FirebaseFirestore.instance.collection(list[0]).doc(list[1]).collection(list[2]).doc(list[3]);
break;      
default: ref = null;
}
//Do whatevar with the ref path.

Firebase的工作方式如下

集合/文档/收藏/文档…

你可以创建一个Document&Collection在firebase中是动态的,但是如果您不知道Collection的名称,则无法获取任何集合。

这意味着如果在Collection中有一个List of Documents,你可以通过使用它的父集合名称来获取列表,但是List of Collection嵌套在一个文档下不能被获取,除非你知道名字。

例如,如果有一个路径users/mike/age。您可以获取users,因为您知道您创建了一个名为usersCollection,并且它的所有文档(如mike)也可以被获取。但是如果你不知道用户的年龄。

最新更新