2014-12-02 56 views
1

對於我的應用程序,我創建了一個服務地址,它允許我操作任何給定用戶的地址對象。除了我的標準CRUD函數外,我還需要一個函數來列出指定Parse.User的任何地址。AngularJS +解析API調用服務不受userId約束

services.js

.factory('Address',['$http', 'PARSE_CREDENTIALS', function ($http,PARSE_CREDENTIALS) { 
    return { 
     // constrain to User ID 
     getAll: function(userId) { 
      return $http.get('https://api.parse.com/1/classes/Address', { 
       headers: { 
        'X-Parse-Application-Id': PARSE_CREDENTIALS.APP_ID, 
        'X-Parse-REST-API-Key': PARSE_CREDENTIALS.REST_API_KEY, 
        'Content-Type' : 'application/json' 
       }, 
       params: { "userId": userId } 
      }); 
     }, 
     // ...get(), edit(), add(), delete() 

controllers.js

.controller('AddrCtrl', ['$scope', '$state', '$stateParams', '$rootScope', 'Address', 
function($scope, $state, $stateParams, $rootScope, Address) { 
     Address.getAll($rootScope.user.id) 
     .success(function(data) { 
      console.log(data); 
      $scope.addresses = data.results; 
     }) 
}]); 

在我的角模板,這個視圖返回地址的對象。但它返回全部 Address對象,它應該只返回具有相應userId的Address對象。爲了說明,Address類有一個userId指針列。每個地址只有一個用戶。

這裏是日誌消息AddrCtrl返回控制檯:

Object {results: Array[2]} 
    results: Array[2] 
     0: Object 
      firstName: "(test)" 
      lastName: "test" 
      // more unrelated properties 
      objectId: "yUEuFjLlzs" 
      updatedAt: "2014-12-02T20:17:55.608Z" 
      userId: Object 
       __type: "Pointer" 
       className: "_User" 
       objectId: "q1KADkp4i1" 

我假設的問題在於我的$ http.get()函數的地方。最終,我的問題是這樣的:爲什麼我的params選項不會將我的data.results限制爲僅與一個Parse.User關聯的Address對象?

答案我不是在尋找:

返回所有地址對象,並只保存那些匹配Parse.User.current()ID爲$範圍。

回答

1

您需要使用where子句來執行查詢。

如果userId數據類型是Pointer,你應該寫如下:

{"where": JSON.stringify({ 
    "userId": {"__type":"Pointer","className":"_User","objectId":"userId"}} 
)}