Почему он читает [объект объекта]? - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь читать из Firebase, но продолжаю получать этот [объектный объект]. Я не знаю, правильно ли я читаю или что-то не так с моей базой данных. Я также пытался использовать jQuery, но он не работает. Это может быть что-то действительно простое, что я скучаю.

//var transcript_title = null;
//var transcript = null;
//This is to intialize everything and auth. with the firebase server
var config = {
    apiKey: "AIzaSyB9p1VvVfhnbrcDwUKUuSqw9aQsqnDi4nQ",
    authDomain: "html5project-870df.firebaseapp.com",
    databaseURL: "https://html5project-870df.firebaseio.com",
    projectId: "html5project-870df",
    storageBucket: "html5project-870df.appspot.com",
    messagingSenderId: "54935462861"
};

//firebase.initializeApp(config);
//checks if it has been init
if (!firebase.apps.length) {
    firebase.initializeApp({});
}

//declare variables
var database = firebase.database();
//tells where the items are going to be 
var Rootref = database.ref().child("users");
var ref = firebase.database().ref("users");

ref.on("value", function(snapshot) {
    console.log(snapshot.val());
}, function (error) {
    console.log("Error: " + error.code);
});

//var Rootref1 = database.ref().child("users").child("id: 113295907411766134791")/*.child("trans")*/;
//used to retrieve data 
Rootref.on("child_added",snap => { 
    //gets the child of titles stores it as variable
    var transcript_title = snap.child("titles").val();
    //var transcript_title = (snap.val() && snap.val().titles);
    //gets the actual title and stores it as a var
    //var transcript = snap.child(transcript_title).val();

    $('#transcrip').val(snap.child('users/id: 107621796826103613669'))
    //jquery - way to add html elemnts with javascript

    $("#read").append('<h4 id = "clicked">'+transcript_title+'</h4>');
    //$("#read").append('<h4 >Test</h4>');

    //when button view was clicked it will show the transcriptiodn
});
{
  "users" : {
    "id: 107621796826103613669" : {
      "hi1" : [ "test" ],
      "hi2" : [ "hi" ],
      "hi23" : [ "hi3" ],
      "hi3" : [ "blaha" ],
      "test" : [ "blahblah" ],
      "test2" : [ "te2" ],
      "titles" : {
        "1" : "hi1",
        "2" : "hi1",
        "184" : "test2",
        "230" : "test",
        "1192012017" : "hi3",
        "2019201220" : "test"
      }
    }
  }
}

1 Ответ

1 голос
/ 01 апреля 2019

Вы читаете названия с:

var transcript_title = snap.child("titles").val();

Что переводится как JSON:

  "titles" : {
    "1" : "hi1",
    "2" : "hi1",
    "184" : "test2",
    "230" : "test",
    "1192012017" : "hi3",
    "2019201220" : "test"
  }

Это объект, поэтому, когда вы установите его в HTML, он покажет это с [object Object] (обратите внимание, что разные браузеры могут обрабатывать это по-разному). Чтобы получить полный JSON в виде текста в вашем HTML, вы можете использовать JSON.stringify(...):

$("#read").append('<h4 id = "clicked">'+JSON.stringify(transcript_title)+'</h4>');

Если вы хотите вместо этого показать все заголовки, вы можете зациклить их:

snap.child("titles").forEach(function(titleSnap) {
  $("#read").append('<h4 id = "clicked">'+titleSnap.val()+'</h4>');
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...