簡體   English   中英

未捕獲的 SyntaxError:await 僅在異步函數中有效(FireBase 文檔)

[英]Uncaught SyntaxError: await is only valid in async function (FireBase documentation)

我正在嘗試從 Firestore 數據庫中獲取數據。 基於Firestore 文檔,我寫了這個:

const productsRef = db.collection('products');
const snapshot = await productsRef.get();
snapshot.forEach(doc => {
  console.log(doc.id, '=>', doc.data());
});

我收到標題中的錯誤。 為什么他們共享不起作用的代碼或者我錯過了什么? 謝謝!

您需要一個async函數才能使用await關鍵字。
如果您沒有運行此代碼的函數,您可以使用 IIFE 包裝器

(async ()=>{
  const productsRef = db.collection('products');
  const snapshot = await productsRef.get();
  snapshot.forEach(doc => {
    console.log(doc.id, '=>', doc.data());
  });
})();

或者根本不使用 await 並將其處理到then鏈中:

const productsRef = db.collection('products');
const snapshot = productsRef.get().then((snapshot)=>{
  snapshot.forEach(doc => {
    console.log(doc.id, '=>', doc.data());
  });
});

await關鍵字與async一起用於消費承諾。 但是為了讓 await 工作,您必須將它包裝在一個用async關鍵字聲明的函數中,如下所示:

const getProducts = async () => {
  const productsRef = db.collection('products');
  const snapshot = await productsRef.get();
  snapshot.forEach(doc => {
    console.log(doc.id, '=>', doc.data());
  });
}

getProducts();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM