2017-09-05 84 views
1

我有一个功能,需要用户输入并搜索Firebase数据库。我想要做的就是捕捉任何错误,尤其是当它们与用户输入不匹配时,我想显示为“输入的数字未找到匹配项”。我如何捕获Firebase搜索错误?

这功能我使用

function searchNSN(data){ 

    var container = document.getElementById('searchresult'); 
    container.innerHTML = ''; 
    var FindNSN = document.getElementById('searchinput').value; 

    firebase.auth().onAuthStateChanged((user) => { 
     if (user) { 
      var BusinessesId = firebase.auth().currentUser.uid; 
      return database.ref('/Businesses/' + BusinessesId + '/Inventory/' + FindNSN).once('value').then(function(snapshot) { 
       var Results = snapshot.val(); 
       var Productkey = Object.keys(snapshot.val())[0]; 
       var ResultCard = ` 
        <h1 class="searchtitle first">${Results.ProductName}</h1> 
        <p class="searchtext">${Results.ProductDescription}<span class="class">${Results.NSN}</span></p> 
        <p class="showproductdetail" onclick="SHOWSEARCHDETAIL();"><a href> Show Product Details </a href></p> 

        ` 
        container.innerHTML += ResultCard; 

      }); 
     } 
    }) 
} 

我知道控制台记录错误,但我该如何实现追赶的错误,并报告给用户?

回答

2

如果数据库的位置/参考不包含任何数据,它仍然会触发一个事件value但用空DataSnapshot(即snapshot.val()null)。你可以检查是否snapshot.val() === null,如果有,请让用户知道没有结果。

Reference,值事件部分。