2015年12月9日 星期三

Parse Cloud Code初體驗

最近在我的App背包客住宿裡需要新增一個上傳住宿資料的功能,由於App是用Parse.com當後端,所以可以選擇用Client SDK直接上傳或是呼叫Cloud Code去管理Data。這次我選擇使用Cloud Code,這樣之後如果要對上傳上來的資料做篩選或是處理都可以立即生效,不用等下一版App上架。

安裝步驟那些就不說了,網路上資料一大把,紀錄幾個自己遇到的問題。

beforeSave

我一開始以為beforeSave會比function早執行,結果卻相反,是先執行function,在儲存前才執行beforeSave。

Geocode

住宿資料上傳前,需要先對Address做Geocode,這個部份可以使用Google Maps API達成,在Geocoding with Google Maps API via Parse Cloud Code這個stackoverflow上的問題有人提供了作法,但是語法跟現在的有點不同,在原答案是用success: error:去分別處理呼叫成功與失敗,現在要用

Parse.Cloud.httpRequest({
  url: 'http://www.example.com/',
  followRedirects: true
}).then(function(httpResponse) {
  console.log(httpResponse.text);
}, function(httpResponse) {
  console.error('Request failed with response code ' + httpResponse.status);
});

then之後接的第一個function處理成功,第二個處理失敗。
一般在Parse Object裡我們會用GeoPoint表示地理位置,那麼從Maps API回來的資料要怎麼轉換為GeoPoint呢?
假設我的Hostel物件有一個欄位叫做location,而它是GeoPoint型別,那麼用下面這樣的轉換方式。

var lat = geocodeResponse.results[0].geometry.location.lat;
var lng = geocodeResponse.results[0].geometry.location.lng;
var point = new Parse.GeoPoint({latitude: lat, longitude: lng});
hostel.set("location", point)

除錯

目前還沒有找到什麼好方法debug,只能在code裡多log,然後在command line用parse log看結果。

console.log(request.params);

沒有留言:

張貼留言