![](/img/trans.png)
[英]Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore
[英]Cloud Functions: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore
嗨,我写了这个 function
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { setDoc, doc } = require("firebase/firestore");
admin.initializeApp();
const db = admin.firestore();
// // Create and Deploy Your First Cloud Functi
exports.idiot = functions.pubsub.schedule('* * * * *').onRun(async (context) => {
// // Add a new document with a generated id
const moment = require('moment')
console.log("testtesttest 603")
console.log(db.collection)
const Questions =
{
Questions: {
QoD: "test",
Upvotes: 0,
}
}
const Comments =
{
Comments: {
Body: "hello",
Replies: [],
Upvotes: 0
}
}
await setDoc(doc(db, "Questions", moment().format('MMM Do YYYY')), Questions);
await setDoc(doc(db, "Comments", moment().format('MMM Do YYYY')), Comments);
});
突然我收到这个错误:
2022-09-28T00:59:00.846793Z ? idiot: FirebaseError: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore
2022-09-28T00:59:00.848764071Z D idiot: Function execution took 9 ms. Finished with status: error
但是它之前是在写文档。
之前脚本运行时是否会弹出此错误?
您在此处导入两个不同的 SDK:
const admin = require("firebase-admin");
const { setDoc, doc } = require("firebase/firestore");
第一行导入 Firebase Admin SDK,它设计用于 Cloud Functions 等可信环境。
第二行从客户端导入两个函数 JavaScript SDK ,用于常规应用。
虽然两个 SDK 的 API 大体相同,但两者并不二进制兼容。 因此, db
变量指向Firestore
object 和 Admin SDK,而您的doc
function 期望来自客户端 JavaScript SDK 的Firestore
object。
仅使用管理员 SDK:
const questionRef = db.doc("Questions", moment().format('MMM Do YYYY'));
await questionRef.set(Questions);
然后相当于评论。
在文档中,您需要查找此语法的v8
代码示例,例如文档中有关写入文档参考的此处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.