当前位置: 首页 > 知识库问答 >
问题:

无法将数据添加到firestore(Android)中的文档

郑锋
2023-03-14

我正在尝试将数据添加到Firebase Firestore的文档中。我向其中添加了一个名为“用户”的集合。此外,读/写权限目前已打开。我在跟踪这个医生。我无法将数据添加到文档中。

以下是我想做的:

private void getNewUserSnapShot() {
    FirebaseFirestore db = FirebaseFirestore.getInstance();
    FirebaseUser user = firebaseAuth.getCurrentUser();
    Log.d(TAG, "getNewUserSnapShot: user_uid: " + user.getUid());
    DocumentReference user_doc_ref = db.collection("users").document();

    Log.d(TAG, "getNewUserSnapShot: document ref: " + user_doc_ref.getId());

    Map<String, Object> user_data = new HashMap<>();
    user_data.put("name", user.getDisplayName());
    user_data.put("email", user.getEmail());
    user_data.put("profile_url", user.getPhotoUrl());

    Log.d(TAG, "getNewUserSnapShot: user_data: " + user_data.toString());

    user_doc_ref
            .set(user_data)
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    Toast.makeText(LoginActivity.this, task.toString(), Toast.LENGTH_LONG).show();
                    if (task.isSuccessful()) {
                        Log.d(TAG, "getNewUserSnapShot: success");
                    } else {
                        Log.d(TAG, "getNewUserSnapShot: failed");
                    }
                }
            });
}

在日志中,我只看到以下内容(无论是失败日志还是成功日志):

2020-03-04 19:48:47.489 30744-30744/com.example.expenditure D/LoginActivity: getNewUserSnapShot: user_uid: iXOzfju6kORnhuUND8zFCPTzxY93
2020-03-04 19:48:47.499 30744-30744/com.example.expenditure D/LoginActivity: getNewUserSnapShot: document ref: 7AluPzcYMLzDKLh8YtBt
2020-03-04 19:48:47.499 30744-30744/com.example.expenditure D/LoginActivity: getNewUserSnapShot: user_data: {profile_url=https://someurl/security/reasons, name=Nikhil Wagh, email=null}

当我看到Firebase控制台时,根据应该创建的日志,我找不到ID7AluPzcYMLzDKLh8YtBt的文档。

还有一个类似的问题:无法向Cloud FiRecovery添加信息,但它没有正确的答案。

有人能帮忙吗。我做错了什么?

共有1个答案

夏建弼
2023-03-14

问题是用户。getPhotoUrl()返回url,但Firestore不支持url。url需要转换为字符串,然后才能工作。

在将数据添加到FiRecovery之前,将您的url转换为字符串。

 类似资料:
  • 我刚开始在我的JAVAFX项目中使用RichTextFX。但是我发现我无法将文本添加到InlineCssTextArea。在项目中,我使用MVC设计并从Scene Builder生成UI代码。InlineCssTextArea已成功创建,但我无法弄清楚为什么我不能添加文本内容。程序成功编译,没有错误。但是InlineCssTextArea默认为空。 我已经在Github上阅读了RichTextFX

  • 如果有人能在这里帮助我,我会非常喜欢它:)

  • 我试图向mongodb发送一个数组,但是返回一个空的,而且mongodb文档中从来没有出现biddingGroup字段。我看过堆栈文章,并看到了关于模式的建议。我试过了 应用程序JS 感谢任何帮助。

  • 问题内容: 没有关于如何在Firestore中的文档中添加子集合,如何使用Web应用程序添加子集合的文档? 甚至像这样尝试过,但没有奏效。如何使用代码在应用程序中添加子集合?有什么办法可以做到,还是使用Firebase实时数据库会更好?如果是这样,请让我知道如何在Firebase中执行此操作,我也想这样添加, 但我却收到这样的错误,错误说明了这一点 问题答案: 如果更改为,您的代码应该可以工作。然

  • 问题内容: 我正在尝试写一些东西,让某人可以将有声读物上课,并且应该将到期日定为14天。我的班级有一个toString()方法,该方法应打印出到期日,但无论如何始终打印出到期日是3/5。 问题答案: 没有按照你的意思去做。它的值是静态常量的值,我想是2(实际上,您可以在源代码中看到它)。 我想你是说 此外,您不应该拨打两次电话:如果您拨打两次电话,日期可能会不一致。调用一次,将其分配给一个字段: