Firebase: путаница в отношении пакетных записей - PullRequest
0 голосов
/ 28 октября 2019

У меня возникли некоторые трудности с пакетной записью 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>

Есть идеи, что это такое?

Спасибо

...