#javascript #firebase-realtime-database
#javascript #firebase-realtime-database
Вопрос:
Я хочу включить firebase в свою JS-игру (таблица лидеров), и я могу записывать в базу данных, но при извлечении данных я получаю странную ошибку, в ней говорится, что Object.keys не является функцией, хотя я явно не использую эту функцию.
Я просмотрел другие вопросы stackoverflow и безрезультатно просмотрел документы.
index.html
<head>
<script src="https://www.gstatic.com/firebasejs/5.10.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.10.0/firebase-database.js"></script>
</head>
<body>
<div>
<form id="high_score" class="hidden">
<input id="name" type="text">
<input type="submit" id="high_score_button" >
</form>
<ul id="high_score_list"></ul>
</div>
<script>
// Initialize Firebase
var config = {
apiKey: "#####",
authDomain: "#####",
databaseURL: "#####",
projectId: "#####",
storageBucket: "#####",
messagingSenderId: "#####"
};
firebase.initializeApp(config);
const database = firebase.database();
</script>
</body>
game.js
function highScoreSubmit(e) {
e.preventDefault();
const data = {
name: "asdf",
score: 14
}
const ref = database.ref('scores');
ref.on('value', gotData);
}
function gotData(dataw) {
const scores = dataw.val();
}
При вызове функции highScoreSubmit я получаю следующие ошибки:
SyncPoint.ts: 244 Uncaught TypeError: Object.keys не является функцией
Комментарии:
1. Итак, где вы определяете
keys
? Приconsole.log(keys);
использовании2. Вы хотели сделать
console.log(scores);
?3. извините, это была ошибка, я исправил ее, и теперь моя функция:
4. функция highScoreSubmit(e) { e.preventDefault(); const data = { name: «asdf», оценка: 14 } const ref = database.ref(‘оценки’); ref.on(‘значение’, gotData()); } функция gotData(dataw) { const оценки = dataw.val(); }
5. Вы вызываете
gotData()
непосредственно поvalue
событию. Вместо этого вы должны передавать ссылку на функцию, т.Е.:ref.on('value', gotData);