我正在嘗試使用Angularjs創建一個文件管理器,最近我發現了Breezejs並試圖用它來與我的後端進行通信並管理我的模型關係。後端是我完全控制的其餘api。fetchEntityByKey沒有向服務器發送任何請求
但是我遇到了一個問題。我知道該文件的ID,所以我想請求backend_url/files/:fileId
表單的url,其中:fileId
是base64編碼文件的URL。根據文件,我應該使用EntityManager.fetchEntityByKey()
來達到這個目的。這是我用於創建Angularjs服務功能:
var FilestoreService = function() {
var dataService, manager;
dataService = new breeze.DataService({
serviceName: "../VFS-Symfony-Backend/web/app_dev.php/filesystems/local/",
hasServerMetadata: false
});
manager = new breeze.EntityManager({
dataService: dataService
});
manager.metadataStore.addEntityType(fileEntityType);
return {
findOneById: function (id) {
/* I have tried to leave the 3th argument empty or changing it to false with the same results */
return manager.fetchEntityByKey("File", id, true).then(function(){console.log("success");}).fail(function(){console.log("failure");});
/* I have also tried the following approach with the same result:
var type, key, query;
type = manager.metadataStore.getEntityType("File");
key = new breeze.EntityKey(type, id);
query = breeze.EntityQuery.fromEntityKey(key);
return manager.executeQuery(query);
*/
}
};
};
其中fileEntityType
定義爲:
var FileEntityType = new breeze.EntityType({
shortName: "File"
});
FileEntityType.addProperty(new breeze.DataProperty({
name: "uri",
dataType: breeze.DataType.String,
isNullable: false
}));
FileEntityType.addProperty(new breeze.DataProperty({
name: "mTime",
dataType: breeze.DataType.Int16,
isNullable: false
}));
FileEntityType.addProperty(new breeze.DataProperty({
name: "type",
dataType: breeze.DataType.String,
isNullable: false
}));
FileEntityType.addProperty(new breeze.DataProperty({
name: "size",
dataType: breeze.DataType.int16,
isNullable: true
}));
然而,當我打電話findOneById
沒有請求向服務器發出和2線登錄到控制檯:
Should be empty:[]
通過q.jsfailure
(按照fail()
回調函數)
A '正常' 查詢(manager.executeQuery(new breeze.EntityQuery().from("Files"));
)確實導致對服務器的請求按預期方式。
我真的很迷茫。我整個週末都在尋找解決方案,最終決定發佈SO,希望有人能夠幫助我。
非常感謝您的閱讀。
很高興你知道這一點。如果此項目已關閉,請點擊左側的複選標記,以便我們可以將其關閉。感謝您使用Breeze。 – Ward 2013-02-27 22:03:42
我認爲你應該給沃德修復的功勞。不是你自己。 – Chris 2014-03-09 23:57:07
我非常感謝沃茲輸入,我同意他應得的所有功勞。我很好奇,儘管你會建議我這樣做。在我的回答開始時,我確實提到了沃德,並且我確實讚揚了他的回答。你是否建議我應該接受Wards的回答,即使這最終不是我的理想解決方案?或者我應該在這個答案中增加一個更加明確的信貸病房?歡迎提出建議。 – Roland 2014-03-10 20:00:25