从firebase到html页面显示数据的问题

hlswsv35  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(190)

我正在尝试显示数据库中的数据。我正在学习使用数据库。当我按下按钮时,我没有显示任何内容。也许有人可以帮助我。
我的js代码是:

<script defer src="https://www.gstatic.com/firebasejs/7.14.5/firebase-app.js"></script>

<script defer src="https://www.gstatic.com/firebasejs/7.14.5/firebase-firestore.js"></script>
<script defer src="https://www.gstatic.com/firebasejs/7.14.5/firebase-database.js"></script>

<script type="module">
  // ...
    
        // TODO: Replace the following with your app's Firebase project configuration
        const firebaseConfig = {
        apiKey: "AIzaSyD2dGlAuA0zPpSGlYkCAFsPM8bsoWaRV44",
        authDomain: "app.firebaseapp.com",
        projectId: "app",
        storageBucket: "app.appspot.com",
        messagingSenderId: "966901972374",
        appId: "1:966901972374:web:663a1b6fc7324c4021b1b7",
        measurementId: "G-CD22ET3FG6"
        };
    
        // Initialize Firebase
        const app = firebase.initializeApp(firebaseConfig);

        var db = firebase.firestore();
        
        function readData() {
        var dataContainer = document.getElementById('data-container');
        
        var productsRef = db.collection("products");
        
        productsRef.get().then((querySnapshot) => {
        querySnapshot.forEach((doc) => {
        var data = doc.data();
        var item = document.createElement('div');
        item.innerHTML = 'Description: ' + data.description + ', Name: ' + data.name + ', Price: ' + data.price; 
        dataContainer.appendChild(item);
        });
        });
        };
</script>

字符串
我的HTML代码是:

<body>
  <div id="data-container"></div>
  <button onclick="readData()">Read Data</button>
</body>


我得到一个错误代码:Uncaught ReferenceError:readData is not defined at HTMLButtonElement.onclick(profili:82:32)
我也可以我截图如何数据库看起来在firebase。我已经附上。
我的数据库规则

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}


我已经谷歌和搜索在stackoverflow,但找不到什么是错的。

sczxawaw

sczxawaw1#

你的readData是在一个模块中定义的,所以你不能只是从全局命名空间调用它。相反,使用addEventListener动态地将回调附加到HTML。
例如,如果您使用以下命令从模块导出readData

export readData;

字符串
您可以在其他代码块中使用它,

document.querySelector('button').addEventListener('click', readData)


参见:ES6 Modules: Undefined onclick function after import

相关问题