首页 > 解决方案 > 在firebase v9等待保留字问题

问题描述

如果我使用 firebase 文档中的代码,则会收到错误 await is reserved word

try {
  const docRef = await addDoc(collection(db, "users"), {
  first: "Alan",
  middle: "Mathison",
  last: "Turing",
  born: 1912
});
 console.log("Document written with ID: ", docRef.id)
} catch (e) {
  console.error("Error adding document: ", e);
}

如果我这样使用它,我不会收到任何错误,但这不起作用

async () => {
try {
   const docRef = await addDoc(collection(db, "projects", vm.add.slug), {
    first: "Alan",
    middle: "Mathison",
    last: "Turing",
    born: 1912
  })
  console.log("Document written with ID: ", docRef.id)
} catch (err) {
    console.log("error deleting data:", err)
  }
}

谁能帮助我我做错了什么。

标签: javascriptfirebasenuxt.js

解决方案


正如 Brian 所说,在第一个示例中,您在一个非异步函数中调用 await,而在第二次尝试中,您只定义了一个从未调用过的函数。

我的建议:创建一个异步函数,并在你想要的地方调用它,等待。

    const submit = async payload => {
      try {
        const docRef = await addDoc(collection(db, "projects", vm.add.slug), payload)
        console.log("Document written with ID: ", docRef.id)
      } catch (err) {
        console.log("error deleting data:", err)
      }
    };
    
    ...
    await submit({
        first: "Alan",
        middle: "Mathison",
        last: "Turing",
        born: 1912
    });
    ...

推荐阅读