代码之家  ›  专栏  ›  技术社区  ›  Jack

云FireStore:如何将文档中的字段设置为空

  •  0
  • Jack  · 技术社区  · 6 年前

    我使用一组文档来标识用户组。我的目的是只用用户ID填充文档ID字段,而不在文档中使用其他无用字段。但是在做了一些研究之后,显然不可能有空的文档。

    因此,我的问题是如何将文档中的(虚拟)字段设置为空,根据 documentation . 我在Android和Web上都在做这个工作,但我想任何平台的代码都可以。

    更新:我已经确认,简单地将空值作为Web中的字段就可以了,但是,当我在Android中尝试类似的方法时,如下所示:

    Map<String, Object> emptyData = new HashMap<>();
    emptyData.put("nullField", null);
    

    Android Studio警告我:

    将“null”参数传递给注释为@notnull的参数

    我应该继续通过空值还是应该做些别的?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Alex Mamo    6 年前

    假设 userId 属性的类型为字符串,请使用以下代码更新所有用户 userId = null :

    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    CollectionReference usersRef = rootRef.collection("users");
    usersRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                List<String> list = new ArrayList<>();
                for (DocumentSnapshot document : task.getResult()) {
                    list.add(document.getId());
                }
    
                for (String id : list) {
                    rootRef.collection("Users").document(id).update("userId", null).addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            Log.d(TAG, "Username updated!");
                        }
                    });
                }
            }
        }
    });
    

    如果您正在为您的用户使用模型类,请查看我的答案。 post .

        2
  •  1
  •   Renaud Tarnec    6 年前

    以下内容适用于Web:

            firebase.firestore().collection('abcd').doc("efgh").set({
                name: "...",
                nullField: null
            })
    
        3
  •  1
  •   Moez ‌    6 年前

    一个对我有效的解决方案,看起来很简单,就是将要使字符串无效的字段设置为空字符串,将整数为空。没有花哨的东西,如果你想,你可以通过在FireBase FireStore文档浏览器中手动将值设置为空来测试它。

    this.itemDoc.update({item: ''});
    

    this.itemDoc.update({item: null});
    

    这是使用angularfire2完成的,这里是到文档的链接: https://github.com/angular/angularfire2/blob/master/docs/firestore/documents.md