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

rqenqsqc  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(223)

我使用一组文档来标识用户组。我的意图是只在文档id字段中填写用户id,而不在文档中填写其他无用的字段。但在做了一些研究后,显然,不可能有空文档。
因此,我的问题是如何将文档中的(虚拟)字段设置为null,根据documentation,Firestore应该支持该字段。我正在Android和Web上研究这个问题,但我认为任何平台的代码都可以。
更新:我已经确认,在Web中简单地将null作为字段就可以了,但是,当我在Android中尝试类似的方法时,如下所示:

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

Android Studio警告我:
将“null”参数传递给注解为@NotNull的参数
我应该继续传递null还是应该做其他事情?

bmp9r5qi

bmp9r5qi1#

假设userId属性的类型为String,请使用以下代码更新所有使用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**中看到我的答案。

gkl3eglg

gkl3eglg2#

以下内容适用于Web:

firebase.firestore().collection('abcd').doc("efgh").set({
            name: "...",
            nullField: null
        })
nc1teljy

nc1teljy3#

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

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

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

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

相关问题