Нажмите / установите данные в Firebase из файла JSON, используя Javascript и Nodejs - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу загрузить данные в базу данных Firebase в реальном времени. Эта информация относится к идентификатору пользователя. Я загрузил эту соответствующую информацию пользователя в файл JSON. Я могу легко прочитать эту информацию в командной строке Node.js, используя JavaScript.

Я знаю, как передавать и задавать данные с помощью JavaScript.

Похоже, моя проблема включает в себя как чтение из файловой операции, так и операцию записи в firebase в одном и том же коде JavaScript.

Чтобы проверить это, я написал действительно простую программу на JavaScript, которая использует функцию обратного вызова, так что я могу убедиться, что она заканчивает чтение из файла до того, как что-либо начинает писать, но даже запись закомментированных кодов делает всю программу JavaScript не работающей. (Я знаю, что мне не нужны ОБА первые 2 строки, но я пробовал разные вещи и хотел показать их обе)

function GetAllData(callback) {

//var userData = require('./save_file.json');
// var fs = require('fs')
//   var obj = JSON.parse(fs.readFileSync('save_file.json').toString())
    var a=2;

if (typeof callback === 'function') {
    callback();
}
}

function PushData() {
var config = {
    apiKey: ,
    authDomain: ,
    databaseURL: ,
    projectId: ,
    storageBucket: ,
    messagingSenderId: 
  };
// Initialize your Firebase app
firebase.initializeApp(config);

// Reference to your entire Firebase database
var myFirebase = firebase.database().ref();
var recommendations = myFirebase.child("recommendations");

setTimeout(pushStuff(), 500);

function pushStuff(){

    recommendations.set({
        "title": "nn"
    });
}
};
 //}

 GetAllData(PushData);

Если я удаляю закомментированный код в первом разделе, «nn» пишется просто отлично. На данный момент я просто хочу иметь возможность читать и писать в одном и том же коде :(

1 Ответ

0 голосов
/ 27 апреля 2018

Как вы упоминаете в своем вопросе, вызовы чтения и записи в базу данных Firebase являются асинхронными.

Они возвращают обещания, как вы можете видеть здесь или здесь , из документации Firebase.

Поэтому вы должны связать эти обещания, как, например, в случае чтения с последующей записью :

return firebase.database().ref('/users/' + userId).once('value')
.then(snapshot => {
    var username = (snapshot.val() && snapshot.val().username) || 'Anonymous';
    return firebase.database().ref(....).set({ username: username });
})
.then(() => {
    console.log('Operation succeeded');
})
.catch(error => {
    console.log('Operation failed');
});

Также, посмотрите этот пост SO Чтение обещания nodejs с помощью firebase

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...