2016-01-01 24 views
0

我想查詢一個Parse.com數據庫來查看某個字段是否可用。然後,我正在根據數據庫中是否存在該變量來執行某些操作。Parse.com query.equalTo錯誤處理

以下是完整的生產函數:

function getProduct() { 

     var Products = Parse.Object.extend("Products"); 
     ProductEAN = 76130347394081; 
     output = ""; 

     var query = new Parse.Query(Products); 
     query.equalTo("EANBarcode", ProductEAN); 
     query.find({ 
      success: function(results) { 
       var no = results[0].get("EANBarcode"); 
       var title = results[0].get("Name"); 
       output += "[" + no + "] " + title; 
       console.log("Output is: " + output); 
      }, 

      error: function(error) { 
       alert(error.message); 
      } 

     }); 
    } 

如果ProductEAN存在,則成功函數按預期工作。如果它不存在,而不是錯誤的功能運行時,我得到一個控制檯輸出說法如下:

"Uncaught TypeError: Cannot read property 'get' of undefined"

我這個指南如下:https://www.youtube.com/watch?v=2TVmgEJfbno

我是有點茫然,的爲什麼這不起作用。有人對這個有經驗麼?

回答

2

find()方法的錯誤回調只有在執行時出錯時纔會被調用。在ProductEAN不存在的情況下,它仍然是一個成功的查詢,但具有零匹配記錄。這意味着它調用你的成功回調,結果是一個空數組。因此結果[0]未定義,這說明了控制檯錯誤輸出。

您可能想要更改成功回調以驗證results.length並做出適當的決定。類似這樣的:

query.find({ 
      success: function(results) { 
       if(results.length > 0){ 
       var no = results[0].get("EANBarcode"); 
       var title = results[0].get("Name"); 
       output += "[" + no + "] " + title; 
       console.log("Output is: " + output); 
       } 
       else{ 
       console.log('No matching records'); 
       } 
      }, 

      error: function(error) { 
       alert(error.message); 
      } 

     }); 
+0

作品一種享受!謝謝你的解釋。瞭解。 –