Как исправить ошибку «Object.keys не является функцией» для Firebase?

#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);