Firebase Realtime database: ошибка записи новых данных

У меня есть куча данных, которые должны быть обновлены в моей базе данных реального времени, но setкоманда ( как описано здесь в документах ) не работает. Вот мой код, с которым я работаю babel-node scriptName.js:

var config = {
  //CONFIG
};
Firebase.initializeApp(config);

var dbRef = Firebase.database().ref();

getAllFirebaseDocs(dbRef);

async function getAllFirebaseDocs(dbRef, newSet) {
    var snapshot = await dbRef.once('value');
    var data = snapshot.val();
    var bookName = "FirebaseForDummies";
    var newData = {
        'prop1': 'string',
        'prop2': 0
    }
    Firebase.database().ref(bookName + "/edition/"+ 3).set(newData);    
}

Я делаю некоторые другие вещи, которые не влияют на запись (следовательно, чтение всех существующих данных). Я специально обновляю / дополняю существующие данные, например; книга FirebaseForDummiesуже имеет 3 издания. Это означает, что editionsзначение в базе данных выглядит примерно так:

0: {data}
1: {data}
2: {data}

Я хочу добавить четвертый, поэтому я создаю ссылку на БД FirebaseForDummmies/edition/3. Затем, как и в doc, я использую setи передаю ему newDataобъект. Это, однако, происходит беззвучно; я не получаю никаких сообщений об ошибках, и ничего не меняется в консоли базы данных реального времени.

редактировать:
Я пробовал эти команды в babel-nodeсеансе в моей консоли, и они работали. Таким образом, в моем скрипте есть что-то, что делает set()функцию не работающей… не уверен, что это, так как у меня есть другие скрипты, которые реализуют set()на существующих данных, и все они работают хорошо.

edit2:
Я добавил обратный вызов следующим образом:

Firebase.database().ref(bookName + "/edition/"+ 3).set(newData, function(error) {
        if(error) {
            console.log(error);
        }
        else {
            console.log("written!");
        }
    });

Опять же, когда я пробую его в babel-nodeконсоли, он работает хорошо (возвращение ‘ написано!’) но в моем сценарии я не получаю ни консоли ошибки, ни консоли успеха.бревно.

1 ответ

  1. Ответ не делать process.exit()в конце скрипта. Я даже не думал об этом, потому что я положил его там просто, чтобы закрыть сценарий, когда он был сделан, но, очевидно, он «отрезал» запросы. Я думаю, что я должен awaitработать с setзапросами, чтобы все это могло происходить синхронно.