2014年10月29日 星期三

Parse.com的第二個練習(2016年底關閉)

清晨7:57 Posted by Envisioning U-Commerce Lab

接著要練習的是如何讀取Parse上的資料庫,而我們訂了一個目標就是再做一次訂便當吧!新增一個DinBenDon(訂便當)的專案,並建立一個ProductsList資料表,再一筆一筆輸入各種類便當的資料。


為了讓大家方便練習,我們將上述ProductsList資料表匯出儲存在雲端硬碟上,就直接下載這個JSON檔案吧。下載之後,就可以直接在上述頁面以Import(匯入)方式建立整個資料表。



參閱Parse.com的Javascript指南,瞭解其查詢語法範例:
 var GameScore = Parse.Object.extend("GameScore");  
 var query = new Parse.Query(GameScore);  
 query.equalTo("playerName", "Dan Stemkoski");  
 query.find({  
  success: function(results) {  
   alert("Successfully retrieved " + results.length + " scores.");  
   // Do something with the returned Parse.Object values  
   for (var i = 0; i < results.length; i++) {  
    var object = results[i];  
    alert(object.id + ' - ' + object.get('playerName'));  
   }  
  },  
  error: function(error) {  
   alert("Error: " + error.code + " " + error.message);  
  }  
 });  

上述程式碼大致是進行下列動作:
  • 使用 Parse.Object.extend 方法指定要存取的子類別
  • 然後進行 new Query of that class
  • 如果要找出資料表裡面符合某種條件的資料就用equalTo方法來查詢
  • 查詢之後,在find方法裡面定義如果有找到符合查詢條件的資料(success)要進行哪些處理動作,而沒有符合的(error)又要進行怎樣的動作。
  • 很明顯的,上述success的處理就是以迴圈將每筆資料get到手。

於是,將第一個練習index.html的42行 Parse.initialize("APPLICATION_ID", "JAVASCRIPT_KEY"); 替換成這個專案的keys(如下所示頁面也可查詢到):



然後,將44~53行以下列程式碼取代:
      var ProductsList = Parse.Object.extend("ProductsList");  
      var query = new Parse.Query(ProductsList);  
      // query.equalTo("欄位名稱", "欄位內容"); 不執行這行就等於是讀出全部的記錄  
      query.find({  
       success: function(results) {  
           alert("Successfully retrieved " + results.length + " records.");  
           // Do something with the returned Parse.Object values  
           for (var i = 0; i < results.length; i++) {  
            var object = results[i];  
            alert(object.id + ' - ' + object.get('Pname'));  
           }  
       },  
       error: function(error) {  
           alert("Error: " + error.code + " " + error.message);  
       }  
      });  


如果上述部分都正確改寫了,以瀏覽器開啟index.html執行,應該就會看到一直跳出對話框顯示每種便當名稱,這就代表確實已經成功讀取雲端資料庫囉。