我的问题是为什么我似乎无法将数据传递到Firestore数据库中。我在node.js上运行代码,试图解析来自Firebase Firestore数据库的数据,然后将信息返回给数据库。信息检索工作正常,但是在尝试将数据传递回数据库时,始终出现一条我无法逃脱的错误消息。
if(message.type = "0") {
console.log(0)
db.collection("outbox").doc("messageID").set({message: "test message"})
}
在尝试处理最后一行代码时,出现以下错误消息:
错误:参数“数据”不是有效的Firestore文档。无效地将类型“ object”用作Firestore参数。
我的数据库的结构为发件箱/消息ID /消息。 Message包含一个字符串值,我正在使用admin SDK,因此写问题不是问题。我将对象传递给Firebase时做错了,但我无法弄清楚。这是我第一次使用Cloud Firestore和node.js,但之前我已经使用HTML / JS完成了小型项目。
答案 0 :(得分:2)
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),这是错误的
作为解决方法,如果您临时需要进行此工作,则可以在以下文件中编辑节点模块源代码:node_modules/@google-cloud/firestore/build/src/serializer.js
将isPlainObject函数更改为:
function isPlainObject(input) {
return util_1.isObject(input);
}