2013-02-21 109 views
0

有一個模型,我希望能夠通過這樣做是爲了記錄一個連接的devicetypes:此錯誤JayData「未捕獲的RangeError:最大調用堆棧大小超出」

var connections = DataLayer.context.ConnectionSet.filter(function(item) { 
    return item.Id == id; 
}, {id: 1}); 

connections.forEach(function(item) { 
    console.log(item.Sender.Device.DeviceType); 
}); 

item.Sender.Device.DeviceType結果: Uncaught RangeError: Maximum call stack size exceeded

這是我的模型:

$data.Entity.extend('SubliminalData.Connection', { 
    'Id': { 'key':true,'type':'Edm.Int32','nullable':false,'computed':true }, 
    'Sender': { 'type':'SubliminalData.DevicePort','required':true }, 
    'Receiver': { 'type':'SubliminalData.DevicePort','required':true } 
    }); 

    $data.Entity.extend('SubliminalData.Device', { 
    'Id': { 'key':true,'type':'Edm.Int32','nullable':false,'computed':true }, 
    'DeviceType': { 'type':'Edm.String','nullable':false,'required':true } 
    }); 

    $data.Entity.extend('SubliminalData.Port', { 
    'Id': { 'key':true,'type':'Edm.Int32','nullable':false,'computed':true } 
    }); 

    $data.Entity.extend('SubliminalData.DevicePort', { 
    'Id': { 'key':true,'type':'Edm.Int32','nullable':false,'computed':true }, 
    'Device': { 'type':'SubliminalData.Device','required':true }, 
    'Port': { 'type':'SubliminalData.Port','required':true } 
    }); 

爲什麼這給了我一個最大的呼叫例外,我該如何解決?我找不到它。

--UPDATE--

我一直在努力得到它最近的工作,我已經改變了我的模型,使我有倒退的導航性能。現在它更有意義,但現在我有另一個問題。

新模式:

$data.Entity.extend('SubliminalData.Connection', { 
    'Id': { 'key':true,'type':'Edm.Int32','nullable':false,'computed':true }, 
    'Sender': { 'type':'SubliminalData.DevicePort','required':true,'inverseProperty':'SendingConnections' }, 
    'Receiver': { 'type':'SubliminalData.DevicePort','required':true,'inverseProperty':'ReceivingConnections' } 
    }); 

    $data.Entity.extend('SubliminalData.Device', { 
    'Id': { 'key':true,'type':'Edm.Int32','nullable':false,'computed':true }, 
    'DeviceType': { 'type':'Edm.String','nullable':false,'required':true }, 
    'DevicePorts': { 'type':'Array','elementType':'SubliminalData.DevicePort','inverseProperty':'Device' } 
    }); 

    $data.Entity.extend('SubliminalData.Port', { 
    'Id': { 'key':true,'type':'Edm.Int32','nullable':false,'computed':true }, 
    'PortType': { 'type':'Edm.String','nullable':false,'required':true }, 
    'DevicePorts': { 'type':'Array','elementType':'SubliminalData.DevicePort','inverseProperty':'Port' } 
    }); 

    $data.Entity.extend('SubliminalData.DevicePort', { 
    'Id': { 'key':true,'type':'Edm.Int32','nullable':false,'computed':true }, 
    'Device': { 'type':'SubliminalData.Device','required':true,'inverseProperty':'DevicePorts' }, 
    'Port': { 'type':'SubliminalData.Port','required':true,'inverseProperty':'DevicePorts' }, 
    'SendingConnections': { 'type':'Array','elementType':'SubliminalData.Connection','inverseProperty':'Sender' }, 
    'ReceivingConnections': { 'type':'Array','elementType':'SubliminalData.Connection','inverseProperty':'Receiver' } 
    }); 

    $data.EntityContext.extend('DataLayer.SubliminalDataContainer', { 
    'ConnectionSet': { type: $data.EntitySet, elementType: SubliminalData.Connection }, 
    'DeviceSet': { type: $data.EntitySet, elementType: SubliminalData.Device }, 
    'PortSet': { type: $data.EntitySet, elementType: SubliminalData.Port }, 
    'DevicePortSet': { type: $data.EntitySet, elementType: SubliminalData.DevicePort } 
    }); 

    $data.generatedContexts = $data.generatedContexts || []; 
    $data.generatedContexts.push(DataLayer.SubliminalDataContainer); 

    /*Context Instance*/ 
    DataLayer.context = new DataLayer.SubliminalDataContainer({ name:'oData', oDataServiceHost: 'http://localhost:57703/WcfDataService1.svc' }); 

我的新問題是這樣的:

var connections = DataLayer.context.ConnectionSet.filter(function(item) { 
     return item.Id == id; 
    }, {id: 1}); 

connections.forEach(function(item) { 
    l(item); //works great! 
    l(item.Sender); //undefined :[ 

}); 

爲什麼我的發件人未定義?我以爲我瞭解JayData,但我相信我不知道。

回答

1

您的代碼看起來沒問題,我們認爲您的代碼的其他部分( 很可能來自遞歸函數調用)會出現此錯誤。 你可以用你的代碼創建一個jsfiddle,以便我們可以測試它嗎?

+0

這將無法正常工作,因爲我使用本地主機。思想的? – HansElsen 2013-02-22 07:40:50

+0

對不起,我們無法提供如此詳細的信息,請提供更多 – 2013-02-22 09:41:03

+0

我的問題已改變,也許您可​​以提供幫助嗎?我已經更新了描述 – HansElsen 2013-02-22 09:56:39

相關問題