您不能使用manager.metadataSote.getEntityType(“Employees”),直到从服务器检索到元数据为止。默认情况下,这发生在第一次查询操作期间,但是您的代码在获取元数据之前尝试使用元数据。
此外,我认为您将资源“Employees”的名称与资源返回的实例的类型(可能是“Employee”)混淆。我还会检查你的密钥的数据类型是数字还是字符串。下面的例子假定它的数字(不像你的例子,其中键的数据类型可能是一个字符串,因为你引用了它)。
所以,你有两种方法,要么强制元以获取您撰写之前,你的查询,例如:
manager = new breeze.EntityManager(serviceName);
manager.fetchMetadata().then(function() {
var empType = manager.metadataStore.getEntityType("Employee");
var entityKey = new EntityKey(empType, 1);
var query = EntityQuery.fromEntityKey(entityKey);
// if you want to also see the queries details
query = query.expand("Details");
return manager.executeQuery(query);
}).then(function (data) {
var results = data.results;
ok(results.length === 1, "should have returned a single record");
var emp = results[0];
));
或者,如果你知道“关键”的字符串名称(“ID”中下面的例子)字段,直接使用它
manager = new breeze.EntityManager(serviceName);
var query = EntityQuery.from("Employees")
.where("Id", "==", 1)
.expand("Details");
manager.executeQuery(query).then(function(data) {
var results = data.results;
var emp = results[0];
});
你在哪里定义你的元数据? –