Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获SyntaxError:await仅在异步函数中有效(FireBase文档)_Javascript_Firebase_Google Cloud Firestore - Fatal编程技术网

Javascript 未捕获SyntaxError:await仅在异步函数中有效(FireBase文档)

Javascript 未捕获SyntaxError:await仅在异步函数中有效(FireBase文档),javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在尝试从Firestore数据库获取数据。根据我写的: const productsRef = db.collection('products'); const snapshot = await productsRef.get(); snapshot.forEach(doc => { console.log(doc.id, '=>', doc.data()); }); 我得到了标题中的错误。为什么他们共享一个不起作用的代码,或者我遗漏了什么?谢谢大家! 关键字wait与as

我正在尝试从Firestore数据库获取数据。根据我写的:

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

我得到了标题中的错误。为什么他们共享一个不起作用的代码,或者我遗漏了什么?谢谢大家!

关键字
wait
async
一起用于消费承诺。但为了让wait工作,您必须将其包装在一个用
async
关键字声明的函数中,如下所示:

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

getProducts();

您需要一个
async
函数才能使用
wait
关键字。
如果没有运行此代码的函数,可以使用IIFE包装器

(async ()=>{
  const productsRef = db.collection('products');
  const snapshot = await productsRef.get();
  snapshot.forEach(doc => {
    console.log(doc.id, '=>', doc.data());
  });
})();
或者根本不使用wait并将其处理到
然后
链中:

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

您正在异步函数的上下文之外使用
wait
。这不是有效的JavaScript。我们无法看到您在其中放置此代码的函数,因此没有更多说明。关键字
wait
不会出现在您链接的页面上。编辑哦,是的。他们只是在节点示例方面做得不好。如果你点击源代码页,你会看到那些代码片段确实在
async
函数中。这就是它的用法:(在
async
函数中)谢谢!这个函数是否可能破坏jQuery函数?下面的代码似乎不再工作了。此特定代码不太可能破坏$,但是,如果例如
db
在其上下文中为null或未定义,则可能会使整个脚本崩溃。检查控制台(F12)并查看是否记录了任何错误。