У меня возникли некоторые трудности с пакетной записью Firebase в моем приложении React.
Использование следующей асинхронной функции:
export const addCollectionAndDocuments = async (collectionKey, objectsToAdd) => {
const collectionRef = firestore.collection(collectionKey);
const batch = firestore.batch();
objectsToAdd.forEach(obj => {
const newDocRef = collectionRef.doc();
batch.set(newDocRef, obj);
});
return await batch.commit();
}
Если я вызываю функцию в своем приложении каким-либо образомпримерно так:
var list = [
{ date: '12/1/2011', reading: 3, id: 20055 },
{ date: '13/1/2011', reading: 5, id: 20053 },
{ date: '14/1/2011', reading: 6, id: 45652 }
];
addCollectionAndDocuments('foo-collection', list)
.then((value) => {
console.log('then ' + value);
})
.catch((e) => {
console.log('catch', e);
})
.finally(() => {
console.log('finally');
});
Это ничего не делает, , если только Я не изменяю / аннулирую свой ключ API Firebase в моем объекте конфигурации Firebase (т.е. в моем приложении изменяю APIключ, чтобы он не соответствовал моему фактическому ключу API Firebase), а затем запустите код. В этом случае, это работает просто отлично, что меня озадачивает.
Я инициализирую базу данных огня примерно так:
import firebase from 'firebase/app';
import 'firebase/firestore';
import 'firebase/auth';
const config = {
apiKey: "xxxxxx",
authDomain: "xxxxxx",
databaseURL: "xxxxxx",
projectId: "xxxxxx",
storageBucket: "xxxxxx",
messagingSenderId: "xxxxxx",
appId: "xxxxxx"
};
firebase.initializeApp(config);
Я пробовал это много раз, но ничего не происходит, покаЯ аннулировал мой ключ API Firebase. До этого я даже не достиг ни одного из методов «тогда», «поймать» или «наконец» в своем обещании.
Приведенный выше код находится в простом приложении create-реагировать, и в настоящее время я запускаю его на сервере разработки «реакция-сценариев».
Если вместо этого я запускаю пакетный код записи вСтатический HTML-документ, он работает полностью, как ожидалось:
<!DOCTYPE html>
<html>
<body>
<script src="https://www.gstatic.com/firebasejs/3.7.4/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.2.2/firebase-firestore.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "x",
authDomain: "x",
databaseURL: "x",
projectId: "x",
storageBucket: "x",
messagingSenderId: "x",
appId: "x"
};
firebase.initializeApp(config);
function myFunction() {
// Get a new write batch
const firestore = firebase.firestore();
var batch = firestore.batch();
// Set the value of 'NYC'
var nycRef = firestore.collection("cities").doc("NYC");
batch.set(nycRef, {name: "New York City"});
// Commit the batch
batch.commit().then(() => {
console.log('done');
});
}
</script>
<p>run stuff</p>
<button onclick="myFunction()">Run batched write</button>
</body>
</html>
Есть идеи, что это такое?
Спасибо