jsonResultsAdapterでbreezeEntityQueryを使用して、次のようなサードパーティ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);
ただし、次のエラーが返されます:「nullのプロパティ'$type'を読み取れません」
EntityManagerは.using(jsonResultAdapter)ステートメントを無視しており、breeze.jsで定義されているデフォルトのjsonResultsAdapterを使用しようとしていると思います。
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を使用するようにそよ風に伝える方法がわかりません。