我的问题是为什么我似乎无法将数据传递到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做过小规模的项目。
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);
}