2017-12-14 20 views
1

저는 Parse Server Javascript API를 사용하여 아래의 Parse Query를 호출하고 있습니다. 장치이라는 클래스가 있습니다. 포인터 개체는 입니다. Device_Type은 차례로 에 대한 포인터를 가지고 있습니다. 포인터입니다.중첩 포인터 데이터

deviceID를 inventoryItem에 성공적으로 표시 할 수 있지만 JSON 네트워크 리턴에 관련 데이터가 있음에도 불구하고 제조업체에 대해 정의되지 않습니다.

$scope.getDeviceItems = function() { 
    var query = new Parse.Query("Device"); 
    query.include("Device_Type"); 
    query.include("Device_Type.Manufacturer"); 
     query.find({ 
      success: function (results) { 
       $scope.deviceItems = []; 
       for (i = 0; i < results.length; i++) { 
        var d = results[i].get("Device_Type"); 
        var m = results[i].get("Device_Type.Manufacturer"); 
        var inventoryItem = { 
         deviceID: d.get("Device_ID"), 
         manufacturer: m.get("Manufacturer_Name") 
        } 
       }; 
      }; 
     }; 
    }; 

중첩 포인터 데이터를 제조업체에 올바르게 얻으려면 어떻게해야합니까? 단지 구문 분석에서 JS 객체 해결

{ 
    "results": [{ 
     "objectId": "q3D2myHG3e", 
     "createdAt": "2017-07-30T22:28:05.035Z", 
     "updatedAt": "2017-09-19T20:40:05.580Z", 
     "Device_Type": { 
      "objectId": "Ksej3F2sdp5", 
      "Device_Name": "Device 1", 
      "createdAt": "2017-07-30T21:57:58.638Z", 
      "updatedAt": "2017-08-08T20:20:14.397Z", 
      "Manufacturer": { 
       "objectId": "3NahYBNIiC", 
       "Manufacturer_Name": "ABC Ltd", 
       "createdAt": "2017-07-30T21:56:40.557Z", 
       "updatedAt": "2017-07-30T22:13:07.425Z", 
       "Devices": { 
        "__type": "Relation", 
        "className": "DeviceType" 
       }, 
       "__type": "Object", 
       "className": "DeviceManufacturer" 
      }, 
      "__type": "Object", 
      "className": "DeviceType" 
     }, 
     ... 
    }] 
} 
지도 쉽게 작동합니다 위와 같이 일반 JS 객체를 사용하는 이유
+0

당신은뿐만 아니라 당신의'json' 데이터를 게시 할 수 있습니까? 네가 성공 전화를 망쳐 놓은 것 같아. 일반적으로'results'를 전달할 때'$ scope.eurica = results.data'와 같은 것을해야합니다. 그러나 나는 확신 할 수 없습니다. 실제 데이터를 표시하면 더 쉬울 것입니다. – ZombieChowder

+0

@ ZombieChowder JSON으로 질문을 수정했습니다. –

답변

1
$scope.getDeviceItems = function() { 
    var query = new Parse.Query("Device"); 
    query.include("Device_Type"); 
    query.include("Device_Type.Manufacturer"); 
     query.find({ 
      success: function (results) { 
       $scope.deviceItems = []; 
       for (i = 0; i < results.length; i++) { 
        var curResult = results[i]; 
        var d = curResult.Device_Type; 
        var m = curResult.Device_Type.Manufacturer; 
        var inventoryItem = { 
         deviceID: d.Device_ID 
         manufacturer: m.Manufacturer_Name 
        } 
       }; 
      }; 
     }; 
    }; 

확실하지 (가정 찾기 기능 : 여기

은 샘플 JSON 객체의 JSON을 Map 객체로 바꾸는 대신에)

지도를 사용하면 "더 깊은"키를 해결하기 위해 말할 수있는 것보다 두 배 더 전화해야합니다.

$scope.getDeviceItems = function() { 
    var query = new Parse.Query("Device"); 
    query.include("Device_Type"); 
    query.include("Device_Type.Manufacturer"); 
     query.find({ 
      success: function (results) { 
       $scope.deviceItems = []; 
       for (i = 0; i < results.length; i++) { 
        var curResult = results[i]; 
        var d = curResult.get('Device_Type'); 
        var m = curResult.get('Device_Type').get('Manufacturer'); // or d.get('Manufacturer') 
        var inventoryItem = { 
         deviceID: d.get('Device_ID') 
         manufacturer: m.get('Manufacturer_Name') 
        } 
       }; 
      }; 
     }; 
    }; 

var testObj = new Map(); 
 
testObj.set('a', new Map()); 
 
testObj.get('a').set('b', 4); 
 

 
console.log(testObj.get('a').get('b'))

+0

감사합니다. 'var m = results [i] .get ("Device_Type"). get ('Manufacturer');을 변경하여 정확하게 필요한 것을 수행했습니다. 더 자세한 설명은 통찰력이 있습니다. 내 지식 수준은 Map 쿼리에 충분히 대답하지 못하고 있습니다. 가이드의 제안 내용 : [http://docs.parseplatform.org/js/guide/#basic-queries](http://docs.parseplatform.org/js/guide/#basic-queries). 좀 더 숙련 된 Parse Devs가 더 많은 통찰력을 제공하기를 바랍니다. –

+1

@MrT 실제로 거기에 링크 된 아아 거기에는 복합 재료에 관한 약간의 정보가 있습니다. 당신이 할 수있는 것처럼 보입니다 .get ([ "Device_Type.Manufacturer"])'http://docs.parseplatform.org/js/guide/# relational-queries 거기에서 "Counting Objects"바로 위까지 스크롤하여 문서를 명시 적으로 설명하지 않는 것처럼 보입니다. – shaunhusain