首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取、设置、更新和删除云端的数据?

如何获取、设置、更新和删除云端的数据?
EN

Stack Overflow用户
提问于 2019-09-24 09:28:31
回答 3查看 32.9K关注 0票数 8

我尝试了一些代码,但得到了一个例外。

我得到的例外是:java.lang.IllegalArgumentException: Invalid document reference. Document references must have an even number of segments, but Users has 1

我搜索了它,根据this,文档引用必须有偶数段:- Document - Collection - document -。

从防火墙获取数据的查询:

代码语言:javascript
复制
String getIsNewUSer;
Firestore.instance.collection('Users').document(uid).get().then((DocumentSnapshot document){
       print("document_build:$document");
        setState(() {
         getIsNewUSer=document['IsNewUser'];
         print("getIsNewUSe:$getIsNewUSer");
        });

    });

用于将数据更新到防火墙的查询:

代码语言:javascript
复制
Firestore.instance
            .collection('Users')
            .document(uid)
            .updateData({
              "IsNewUser":"1"
            }).then((result){
              print("new USer true");
            }).catchError((onError){
             print("onError");
            });

这些代码行在我的异常之上。

initState:

代码语言:javascript
复制
 void initState()  {
    super.initState();
    this.uid = '';

FirebaseAuth.instance.currentUser().then((val){
      setState(() {
      this.uid= val.uid; 
       print("uid_init: $uid");
      });
   });

}

我做错了吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-24 10:23:13

在查询中替换此部分:

代码语言:javascript
复制
Firestore.instance.collection('Users').document(uid)

使用

代码语言:javascript
复制
Firestore.instance.document('Users/$uid')

集合-文档-收集-文档-集合-文档

基本上你已经有答案了。

票数 6
EN

Stack Overflow用户

发布于 2021-06-06 07:31:32

空安全代码:

  • Get数据:

var collection = FirebaseFirestore.instance.collection('collection');var docSnapshot = collection.doc('doc_id').get();Map?data = docSnapshot.data();

  • Set数据:

var collection = FirebaseFirestore.instance.collection('collection');collection.add(someData);

  • Update data

var collection = FirebaseFirestore.instance.collection('collection');collection .doc('foo_id') // <- Doc,其中应该更新数据。.update(newData);

  • Delete数据:

var collection = FirebaseFirestore.instance.collection('collection');collection .doc('some_id') // <--要删除的文档ID。.delete();

票数 13
EN

Stack Overflow用户

发布于 2019-09-24 10:58:40

FirebaseAuth.instance.currentUser()未来可能没有完成并普及this.uid。所以this.uid == '‘(空字符串)。因此,当您试图在Users上更新文档(这是一个集合)时,Firestore正在抛出错误。

可以通过在update语句之前打印this.uid来验证这一点。

一种方法是使用助手方法来更新

代码语言:javascript
复制
Future<void> update(Map data) async {
    final user = await FirebaseAuth.instance.currentUser();
    return Firestore.instance.collection('Users').document(user.uid).updateData(data);
}

然后可以使用helpr方法作为update({isNewUser: "1"}).then((r) {...})....

您也可以采用同样的方法获取文档。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58077155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档