【问题标题】:CollectionReference.doc() requires its first argument to be of type non-empty stringCollectionReference.doc() 要求它的第一个参数是非空字符串类型
【发布时间】:2019-08-15 00:11:13
【问题描述】:

我有一个 ionic 应用程序试图更新 firebase 中的记录。我不断收到此错误。不知道我做错了什么。

错误:未捕获(承诺中):FirebaseError:[code=invalid-argument]:函数 CollectionReference.doc() 要求其第一个参数为非空字符串类型,但它是:自定义 Object 对象

FirebaseError: Function CollectionReference.doc() 要求其第一个参数为非空字符串类型,但它是:自定义 Object 对象

这是我的更新功能。

updateTodo(todo: Todo, id: string) {

    return this.todosCollection.doc(id).update(todo)
}

【问题讨论】:

  • id 的值究竟是什么?使用调试器或记录值以准确显示您传递的内容。
  • 您确定您的id 不为空或为空吗?
  • 我有一个类似的问题,我通过更正文档参考解决了这个问题,在你的情况下是“id”。只需确保代码中“id”的值是 firebase 文档的有效参考字符串。

标签: typescript firebase google-cloud-firestore


【解决方案1】:

当您尝试将空对象发送到 Firebase 时会发生这种情况。 在异步调用完成之前重置表单值时出现此错误..

【讨论】:

  • 你是怎么解决的?
【解决方案2】:

在我的例子中,我在 .doc 函数中传递了一个数字类型变量,但它需要一个字符串。验证您的“id”变量是否有值并且它不是未定义的、null 或空字符串。

【讨论】:

    【解决方案3】:

    问题出在您在 doc 中传递的 id 上,它应该是一个字符串..尝试记录它的值只是为了检查您到底传递了什么

    【讨论】:

    • 好的,我试试看。
    【解决方案4】:

    转到您调用该函数的地方 updateTodo 使用 uid 而不是 id。

    【讨论】:

    【解决方案5】:

    我遇到了这个问题并通过输入 .doc(cred.user.uid) 而不是 .doc(cred.user.id) 解决了它。

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 2019-01-03
      • 2019-06-07
      • 2019-10-27
      • 1970-01-01
      • 2021-12-03
      • 2021-09-28
      • 1970-01-01
      相关资源
      最近更新 更多