0
我想使用Breeze從服務器獲取數據到AngularJS應用程序,並且雖然服務器正在發送JSON數據,但客戶端應用程序是沒有得到它。我使用調試器識別問題的最接近的地方是看到以下函數getRemoteEntities()
(它是Factory的一部分)應該返回一個promise,但是在用有效的entityURL和jsonAdapter調用時返回一個空的Object {}:Breeze EntityManager.executeQuery()不返回承諾(或數據?)在AngularJS
[...]
var manager = entityManagerFactory.newManager();
[...]
return {
getRemoteEntities: function (entityUrl, jsonAdapter) {
var query = breeze.EntityQuery
.from(entityUrl)
.using(jsonAdapter);
return manager.executeQuery(query)
.then(function (results) {
return results;
})
.catch(function (error) {
return $q.reject(error);
});
}
}
我已經檢查,以及將碼確實使用微風角服務描述here。我不明白什麼是不工作。
編輯:刪除.using(jsonAdapter)
意味着我能夠得到並解決承諾,表明它可能會做一些混亂的事情。這裏是一個例子(他們都遵循這種模式):
.value('jsonProfileResultsAdapter', new breeze.JsonResultsAdapter({
name: "xyz", // mild obfuscation
extractResults: function (data) {
var results = data.results;
if (!results) throw new Error("Unable to resolve 'results' property");
return results;
},
visitNode: function (node, parseContext, nodeContext) {
if (node) {
if (node.person && node.assignments) {
return {entityType: "EmployeeModel"}
}
}
}
}))
那麼,'jsonAdapter'的目的是服務器正在服務串行化爲JSON的Smalltalk對象。看起來'jsonAdapter'主要是附加一個'entityType'? (我沒有寫出它們)。我試着將jsonAdapter從等式中拿出來(例如,簡單地說'var query = breeze.EntityQuery.from(entityUrl);'),我現在正在(並可能解決)一個承諾但我無法從管理器獲取實體(可能是因爲'jsonAdapter'已被刪除)。 –