Javascript 未捕获SyntaxError:await仅在异步函数中有效(FireBase文档)
我正在尝试从Firestore数据库获取数据。根据我写的: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
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)并查看是否记录了任何错误。