提问者:小点点

Cloud Firestore node.js将类型“object”用作Firestore参数无效


我的问题是为什么我似乎无法将数据传递到FiRecovery数据库中。我在node. js上运行代码,试图解析来自我的Firebase FiRecovery数据库的数据,然后将信息返回给数据库。检索信息工作正常,但是在尝试将数据传回数据库时,不断出现我一生都无法逃脱的错误消息。

if(message.type = "0") {
  console.log(0)
  db.collection("outbox").doc("messageID").set({message: "test message"})
}

尝试处理最后一行代码时,出现以下错误消息:

错误:参数“data”不是有效的Firestore文档。“object”类型用作Firestore参数无效。

我的数据库结构为发件箱/消息 ID/消息。消息包含字符串值,我正在使用管理员 SDK,因此写入问题不是问题。我在将对象传递到Firebase时做错了什么,但我就是想不通。这是我第一次使用Cloud Firestore和node.js但我以前用HTML/JS做过小规模的项目。


共1个答案

匿名用户

firestore检查值是否为数组的方式看起来像是内部错误。

我在尝试简单的

db.collection('Test').add({ foo: 'bar' })

这导致

Error: Value for argument "data" is not a valid Firestore document. Invalid use of type "object" as a Firestore argument

在深入研究firebase源代码后,我发现他们根据以下测试检查对象是否为对象:

Object.getPrototypeOf(input) === Object.prototype

由于某些不可理解的原因,这在某些环境中是错误的(在我的情况下:Node v10.15.3 CLI)

如果您临时需要这样做,作为一种变通方法,您可以在这个文件中编辑您的节点模块源代码:< code > node _ modules/@ Google-cloud/firestore/build/src/serializer . js

将isPlainObject函数更改为:

function isPlainObject(input) {
    return util_1.isObject(input);
}

相关问题