我正在本地环境中构建这个云功能,我需要保存一些可以修复的内容:
下面是我如何初始化firebase-admin应用程序:
myFunction.js
if (!adminHasInitialized) {
console.log("INITIALIZING ADMIN APP"); // THIS IS BEING LOGGED
admin.initializeApp({
credential: admin.credential.applicationDefault(),
});
adminHasInitialized = true;
}下面是我试图更新Firestore的方法:
await admin.firestore().collection("myCollection").doc("myDoc").update({
...
});注意:,我在MY_PROJECT_1上工作
这就是我所犯的错误:
详细信息:“没有要更新的文档: projects/MY_PROJECT_2/databases/(default)/documents/myCollection/myDoc',
问题
不知怎么的,firebase-admin正在另一个数据库中查找我所拥有的不同项目的firebase-admin。
当我运行:firebase projects:list时,我得到的是:
Project Display Name │ Project ID │ Resource Location ID
MY_PROJECT_1 │ MY_PROJECT_1 (current) │ us-central1
MY_PROJECT_2 │ MY_PROJECT_2 │ us-central1所以目前的项目是正确的。
此外,我还有这个文件,我将默认设置为MY_PROJECT_1。
.firebaserc
{
"projects": {
"default": "MY_PROJECT_1"
}
}在初始化应用程序时,我还尝试添加DB URL,如下所示:
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: "https://MY_PROJECT_1.firebaseio.com"
});但我总是犯同样的错误。
注意:通过以下命令在本地环境中使用babel-node运行该函数:
npx babel-node functions/src/myFunction.js
问题
firebase-admin是如何获得与我目前正在处理的默认项目不同的呢?
更新1
我认为firebase-admin是从安装在我的PC上的gcloud SDK获得默认配置。
发自:
C:\Users\USER\AppData\Roaming\gcloud\configurations\config_default
config_default:
[core]
account = my@email.com
project = MY_PROJECT_2 // MAYBE IT IS COMING FROM HERE更新2
到目前为止,我唯一能做到的就是:
admin.initializeApp({
projectId: "MY_PROJECT_1",
databaseURL: "https://MY_PROJECT_1.firebaseio.com"
});当我在本地运行这个函数时,这给了我正确的项目。
发布于 2020-03-13 14:17:49
由于您不再需要使用admin.initializeApp(functions.config().firebase);初始化Firebase函数的1.0.0版本,请参阅文档这里,这说明:
firebase-admin现在在云函数运行库中没有任何参数的情况下被初始化。
因此,请试着:
if (!adminHasInitialized) {
console.log("INITIALIZING ADMIN APP");
admin.initializeApp();
adminHasInitialized = true;
}https://stackoverflow.com/questions/60671320
复制相似问题