【发布时间】:2020-03-13 13:24:25
【问题描述】:
我正在本地环境中构建此云功能,我需要将一些内容保存到 Firestore:
这是我初始化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
这是我得到的错误:
details: '没有要更新的文档:projects/MY_PROJECT_2/databases/(default)/documents/myCollection/myDoc',
问题
不知何故,firebase-admin 正在另一个数据库中查找我拥有的另一个项目 MY_PROJECT_2。
当我运行时: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"
});
当我在本地运行此功能时,这为我提供了正确的项目。
【问题讨论】:
标签: firebase google-cloud-firestore google-cloud-functions firebase-admin