我正在运行firebase,当我看到一个奇怪的行为,我无法理解。我的html看起来像这样:
<script src="https://www.gstatic.com/firebasejs/8.2.6/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.2.6/firebase-firestore.js"></script>
<script type="module">
// Import the functions you need from the SDKs you need
import { initializeApp, } from "https://www.gstatic.com/firebasejs/9.0.2/firebase-app.js";
import { getAnalytics } from "https://www.gstatic.com/firebasejs/9.0.2/firebase-analytics.js";
import { getFirestore, collection, getDocs, addDoc } from 'https://www.gstatic.com/firebasejs/9.0.2/firebase-firestore.js';
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
const firebaseConfig = { ... } //firebase config
// Initialize Firebase
const app = initializeApp(firebaseConfig);
const analytics = getAnalytics(app);
const db = getFirestore(app);
const querySnapshot = await getDocs(collection(db, "location")); *** //await is running without async! ***
console.log(querySnapshot)
querySnapshot.forEach((doc, index) => {
// do something with doc
*** // index always returns undefined! ***
}
问题1:没有await的异步运行。
问题2:从firebase读取和迭代数据后索引未定义。请帮助我,因为我学了一年多的js,我现在感觉像一个完整的新手。
感谢Bergi(个人资料):它确实是一个顶级的await (moduleJS中的一个特性)。
在这里阅读更多信息:https://v8.dev/features/top-level-await
谢谢!Dharamraj(简介)=>querySnapshot.docs.forEach()
索引现在运行良好。