嵌套指针数据

Nested Pointer Data

我正在使用解析服务器 Javascript API 调用以下解析查询。我有一个名为 Device 的 class,它有一个指向 Device_Type 的指针对象,它又有一个指向 制造商.

我可以在 inventoryItem 中成功显示 deviceID,但是对于制造商来说是未定义的,尽管 JSON 网络中有相关数据 return。

$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")
                    }
                };
            };
        };
    };

如何正确获取制造商的嵌套指针数据?

这是一个示例 JSON 对象:

{
    "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"
        },
        ...
    }]
}
$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
                    }
                };
            };
        };
    };

不确定为什么要使用地图如上所示的常规 JS 对象会更容易工作(假设 find 函数只是通过解析 JSON 的 JS 对象解析,而不是将其转换为 Map 对象)

使用地图,你需要调用 get 两次,据我所知,以解析 "deeper" 个键。

$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'))