我正在尝试使用带有 jsonResultsAdapter 的微风 EntityQuery 来使用这样的第三方 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' of null ”
我认为 EntityManager 忽略了.using(jsonResultAdapter)语句,它正在尝试使用在微风.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 而不是默认的。