Javascript firebase.database (). Ref.on (...) возвращает ноль - PullRequest
0 голосов
/ 02 ноября 2018

Я кидаю полотенце. Я просто не могу понять это. Я настроил приложение Firebase и просто пытаюсь выполнить простой запрос данных, но он возвращает ноль. В настоящее время моя база данных общедоступна, поэтому не должно быть никаких проблем с разрешениями. Я могу успешно пройти аутентификацию, используя пакет npm, react-firebaseui/StyledFirebaseAuth и получить информацию о пользователе, так что она работает в некоторой степени, но я просто не могу получить данные из базы данных. Я много раз просматривал документы и пытался найти здесь проблему, но, похоже, ничего не нашел. Я старался быть тщательным. Так вот в основном то, что у меня есть ...

// The actual config in the code is copied directly from the firebase general settings page, so if it isn't right, it isn't right on their page.
const  config = {
  apiKey: "someKey",
  authDomain: "myAppId.firebaseapp.com",
  databaseURL: "https://myAppId.firebaseio.com",
  projectId: "myAppId",
  storageBucket: "myAppId.appspot.com",
  messagingSenderId: "mySenderId"
};
const handleSnapshot = (snapshotVal) => {
    console.log(snapshotVal);
    // Using react hence the setState, but this and the console.log return null
    this.setState({data: snapshotVal});
}

firebase.initializeApp(config);

database = firebase.database()
countriesRef = database.ref('countries');
countriesRef.on('value', function(snapshot) {
    handleSnapshot(snapshot.val());
});

Я тоже пробовал ... countriesRef = database.ref('/countries'); ...а также... countriesRef = database.ref('/countries/'); ... и просто чтобы быть уверенным, я скопировал / вставил имя прямо из базы данных.

Вот скриншот базы данных ...

Firebase Screengrab

1 Ответ

0 голосов
/ 02 ноября 2018

Firebase предоставляет 2 различных вида баз данных: База данных реального времени и Firestore .

На скриншоте видно, что вы используете базу данных Firestore, но вы подключаетесь к базе данных в реальном времени.

Сначала инициализируйте Firebase (в вашем примере это нормально):

firebase.initializeApp(config);

Затем вам нужно подключиться к Firestore:

// Initialize Cloud Firestore through Firebase
const db = firebase.firestore();

// Disable deprecated features
db.settings({
  timestampsInSnapshots: true
});

Теперь, когда вы подключены, пришло время для вашего первого запроса:

const countriesRef = db.collection("countries");

countriesRef.get()
    .then((snapshot) => {
        snapshot.docs.forEach(doc => {
            console.log(doc.data())
        })
    })
    .catch((error) => {
        console.log("Error getting countries:", error);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...