【问题标题】:How to display all items from Firestore in Svelte?如何在 Svelte 中显示来自 Firestore 的所有项目?
【发布时间】:2022-12-09 10:14:38
【问题描述】:

我正在尝试制作一个待办事项应用程序。我可以在控制台中从 firebase 获取所有信息,但是我可以在 ui 中显示的唯一项目是最后一个。我怎样才能显示所有这些?

let msg 
let textinput
async function f() {
  try {
const docRef = await addDoc(collection(db, "users"), {
  name: textinput,
});
console.log("Document written with ID: ", docRef.id);
} catch (e) {
console.error("Error adding document: ", e);
}}
onMount(async () => {
  
const querySnapshot = await getDocs(collection(db, "users"));
querySnapshot.forEach((doc) => {
// doc.data() is never undefined for query doc snapshots
msg = doc.data().name
console.log(doc.id, " => ", doc.data());
});
});
<h1>
  this is for datebase
</h1>
<input type="text" bind:value={textinput}>
<p>{msg}</p>

ui and the console console_output

我尝试了 {#each querySnapshot as doc},但未定义 querySnapshot

【问题讨论】:

    标签: javascript firebase google-cloud-firestore svelte sveltekit


    【解决方案1】:

    你有一个数组。 querySnapshot.docs 是一组查询结果 (docs)。

    {#each querySnaphot.docs as doc}
      <li>{doc.id} => {doc.data().name}</li>
    {/each}
    

    或者

    {#each querySnaphot.docs as doc}
      {@const {name} = doc.data()}
      <li>{doc.id} => {name}</li>
    {/each}
    

    奖金循环:
    如果你有一个对象你可以循环:{#each Object.keys(obj) as key}
    或者:{#each Object.entries(obj) as [key, value]}

    更新查询快照:

    const getQuerySnapshot = async () => {
      return await getDocs(collection(db, "users"));
    }
    
    let promise = getQuerySnapshot ();
    

    getQuerySnapshot 箭头函数返回一个承诺。更多here
    要解决承诺,您可以:

    {#await promise then guerySnapshot}
      {#each guerySnapshot.docs as doc}
        <li>{doc.id} => {doc.data().name}</li>
      {/each}
    {/await}
    

    【讨论】:

    • 谢谢,但是“querySnaphot 未定义”。我如何在函数之外定义它。对不起,如果这是一个愚蠢的问题!
    • 我已经更新了我的答案。
    • 我得到一个错误:{#each} 只迭代类似数组的对象。谢谢您的反馈!
    • 是的。我们需要 guerySnapshot 的文档数组
    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2018-11-22
    • 1970-01-01
    • 2023-02-17
    • 2020-11-08
    相关资源
    最近更新 更多