为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查firestore文档中是否存在字段?

如何检查firestore文档中是否存在字段?

Helenr 2022-12-22 12:03:47
即使if(doc.exists)工作完美,但如果我点击的特定字母没有数据,它不会显示控制台消息 -console.log("There is a no song which starting with clickedletter");例如 - 如果我单击按钮“A”并成像有一首以字母“A”开头的歌曲。此数据很快弹出,但是当我单击 firestore 文档中不存在数据的按钮“T”时,控制台消息未显示。function getID(a){    console.log("youclicked", a.id);    var id = a.id;    //getting this "a" value from an alphabetic pagination bar----------    const clickedletter = a.getAttribute('value');    var Aristid = sessionStorage.getItem("getArtistID");    console.log("current artist ID "+ searchforid);    db.collectionGroup('MP3_Songs').where("Idofartist", "==", Aristid).orderBy("Song_name").startAt(clickedletter).endAt(clickedletter +'\uf88ff').get().then((documentSnapshot) =>{          documentSnapshot.forEach(doc=> {            if(doc.exists){                              const data = doc.data();              console.log("start with clickedletter", data);              gotdata.innerText = "Song name: " + data.Song_name;            } else{             // this is the problem I got. This console log does not show if there is no data.---                console.log("There is a no song which starting with clickedletter");            }                  })                          }).catch(function(error) {          console.log("Error getting document:", error);      });}
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

你应该添加一个检查,看看整个结果集中是否没有文档,这是一个QuerySnapshot类型的对象。它有一个名为empty的属性。

db.collectionGroup('MP3_Songs').where("Idofartist", "==", Aristid).orderBy("Song_name").startAt(clickedletter).endAt(clickedletter +'\uf88ff').get()

    .then((querySnapshot) => {

        if (querySnapshot.empty) {

            // here, there are no documents in the query results

        }

        else {

          // here, you can iterate the documents to find matches

          querySnapshot.forEach(documentSnapshot => { ... })


查看完整回答
反对 回复 2022-12-22
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信