Я создаю эту облачную функцию в своей локальной среде, и мне нужно что-то сохранить в 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
И вот эта ошибка, которую я получаю:
детали: 'Нет документов для обновления: проекты / MY_PROJECT_2 / database / ( по умолчанию) / documents / myCollection / myDo c ',
ПРОБЛЕМА
Каким-то образом 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
.firebaser c
{
"projects": {
"default": "MY_PROJECT_1"
}
}
Я также пытался добавить URL-адрес БД при инициализации приложения, s:
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
получает конфигурацию по умолчанию из gcloud
SDK, который установлен в моем P C.
От:
[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"
});
Это дает мне правильный проект, когда я запускаю эту функцию локально.