gpt4 book ai didi

javascript - Breeze 无法使用在 Breeze 1.4.14 中具有 .expand 子句的查询返回扩展实体

转载 作者:行者123 更新时间:2023-11-30 17:24:55 25 4
gpt4 key购买 nike

我现在使用的是 Breeze 1.1.14,之前我使用的是 Breeze 1.1.11。当我使用 Breeze 1.1.11 时,我可以使用扩展实体和带有 .expand 子句的查询,并且我的结果集将包含扩展实体。使用 Breeze 1.1.14,情况不再如此。如果我使用 .expand 子句,我将只返回实体的非扩展部分。

举个例子:首先声明扩展实体:

var projectAugmented = function() {
this.LastFirstName = ko.observable("");
this.ProjectNameTemp = ko.observable("");
this.flushYesNo = ko.observable(false);
};

metadataStore.registerEntityTypeCtor("tblProjects", projectAugmented);

然后创建一个使用扩展实体的函数:

var getProject = function(projectName) {
var deferred = Q.defer();
var predicate = new breeze.Predicate("ProjectName", "==", projectName);
var qry = new breeze.EntityQuery()
.from("GetProject")
.where(predicate)
.expand("tblProjects_Techs, tblProjects_GSIDs, tblProjects_Customers, tblLogBook");

manager.executeQuery(qry.using())
.then(function(r) {

deferred.resolve(r.results);
})
.fail(qryFailed);

function qryFailed(e) {
deferred.reject(new Error(e));
}

return deferred.promise;
};

如果我使用 Breeze 1.4.14 运行查询,查询将不会返回任何扩展实体值。如果我删除 .expand 子句,查询将返回扩展的实体值。此功能存在于 Breeze 1.4.11 中。这是 Breeze 1.4.14 中的错误还是新功能。如果它是一项新功能,那么它记录在何处?

最佳答案

我们没有做任何有意改变您期望的行为的事情。我不想重复显而易见的事情,但在很多这样的情况下,事实证明应用程序代码的更改导致了错误的发生,而不是对 Breeze 版本的更改。

所以请幽默一下,并绝对肯定地确认您的说法。我的意思是,您采用完全相同的代码,并表明单独将 v.1.4.14 换成 1.4.11 会导致问题

FWIW,您可以通过省略可观察对象来简化您的自定义构造函数。简单的属性定义即可。

var projectAugmented = function() {
this.LastFirstName = "";
this.ProjectNameTemp = "";
this.flushYesNo = false;
};

如果您能确认 1.4.14 有问题,我很好奇简化的构造函数是否有所不同。

杂费

您不需要使用 deferred 之类的东西来做您自己的 promise 工作。您正在使用的 Breeze 查询方法已经返回 promise 。

var getProject = function(projectName) {
return new breeze.EntityQuery()
.from("GetProject")
.where("ProjectName", "==", projectName)
.expand("tblProjects_Techs, tblProjects_GSIDs, tblProjects_Customers, tblLogBook")
.using(manager).execute()
.then(function(data) {return data.results;});
// no need for your fail clause because it's work is already in a failed promise from breeze
};

看看没有多余的 promise dreck 有多脆?

关于javascript - Breeze 无法使用在 Breeze 1.4.14 中具有 .expand 子句的查询返回扩展实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24462265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com