Я пытаюсь использовать Breeze EntityQuery с jsonResultsAdapter для использования стороннего API, подобного этому (настройка DataService опущена):
var jsonResultsAdapter = new breeze.JsonResultsAdapter({
name: "eventAdapter",
extractResults: function (json) {
return json.results;
},
visitNode: function (node, queryContext, nodeContext) {
var entityTypeName = 'Event';
var entityType = entityTypeName && queryContext.entityManager.metadataStore.getEntityType(entityTypeName, true);
var propertyName = nodeContext.propertyName;
var ignore = propertyName && propertyName.substr(0, 1) === "$";
return {
entityType: entityType,
nodeId: node.$id,
nodeRefId: node.$ref,
ignore: ignore
};
}
});
var query = new breeze.EntityQuery("Events")
.using(jsonResultsAdapter);
return this.manager.executeQuery(query);
Но он возвращает эту ошибку: «Невозможно прочитать свойство '$ type', равное нулю».
Я думаю, что EntityManager игнорирует оператор .using (jsonResultAdapter) и пытается использовать jsonResultsAdapter по умолчанию, определенный в breeze.js:
ctor.prototype.jsonResultsAdapter = new JsonResultsAdapter({
name: "webApi_default",
visitNode: function (node, queryContext, nodeContext ) {
var entityTypeName = EntityType._getNormalizedTypeName(node.$type);
var entityType = entityTypeName && queryContext.entityManager.metadataStore.getEntityType(entityTypeName, true);
var propertyName = nodeContext.propertyName;
var ignore = propertyName && propertyName.substr(0, 1) === "$";
return {
entityType: entityType,
nodeId: node.$id,
nodeRefId: node.$ref,
ignore: ignore
};
}
Не знаю, как сказать ветру использовать мой jsonResultsAdapter вместо стандартного.