Простой экспресс-запрос firebase не работает

#node.js #firebase #firebase-realtime-database

#node.js #firebase #firebase-база данных в реальном времени

Вопрос:

Я следил за node.js руководство по настройке приложения firebase. Это код в моем app.js файле. Вся информация верна, но я не получаю значение из ключа моментального снимка. На самом деле, storesRef.once() никогда не печатает «тест». Ошибки не выдаются, поэтому я не уверен, где я ошибаюсь.

 // init firebase
firebase.initializeApp({
  serviceAccount: {
    projectId: "wrapper",
    clientEmail: "wrapper@wrapper.iam.gserviceaccount.com",
    privateKey: "-----BEGIN PRIVATE KEY-----nMY KEYn-----END PRIVATE KEY-----n"
  },
  databaseURL: "https://wrapper.firebaseio.com"
});

// test get 
var db = firebase.database();
var storesRef = firebase.database().ref('Stores/');
storesRef.once('value', function(snapshot) {
  console.log(snapshot.key);
  console.log("test");
 },function (errorObject) {
    console.log("The read failed: "   errorObject.code);
});
  

Спасибо!

Ответ №1:

Чтобы использовать выбранные значения, их необходимо извлечь с помощью метода .val() .

Из документации firebase:

firebase.database.DataSnapshot

Снимок данных содержит данные из местоположения базы данных.

Каждый раз, когда вы считываете данные из базы данных, вы получаете данные в виде DataSnapshot. Снимок данных передается обратным вызовам событий, которые вы подключаете с помощью on() или once() . Вы можете извлечь содержимое моментального снимка в виде объекта JavaScript, вызвав метод val() . Кроме того, вы можете перейти к моментальному снимку, вызвав child(), чтобы вернуть дочерние снимки (для которых вы затем можете вызвать val()).) .

 storesRef.once('value', function(snapshot) {
  console.log(snapshot.val().key); // change this
  console.log("test");
},function (errorObject) {
   console.log("The read failed: "   errorObject.code);
});
  

Комментарии:

1. Ни тест, ни val().ключ напечатан

2. Правильная ли ссылка? Попробуйте распечатать ссылку, storesRef.toString() .