javascript - Breeze Cannot return extended Entities using queries that have an .expand clause in Breeze 1.4.14 -
i using breeze 1.1.14, previously using breeze 1.1.11. when used breeze 1.1.11, use extended entity , query .expand clause , result set contain extended entity. breeze 1.1.14, no longer case. if use .expand clause, return non-extended portion of entity.
here example: first declare extended entity:
var projectaugmented = function() { this.lastfirstname = ko.observable(""); this.projectnametemp = ko.observable(""); this.flushyesno = ko.observable(false); }; metadatastore.registerentitytypector("tblprojects", projectaugmented); then create function uses extended entity:
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; }; if run query using breeze 1.4.14, query not return of extended entity values. if remove .expand clause, query return extended entity values. functionality existed in breeze 1.4.11. bug, or new feature in breeze 1.4.14. if new feature, documented?
we have done nothing intentional change behavior expect. hate belabor obvious in many of these cases turns out change in application code accounts misadventure rather change breeze version.
so humor me, please, , confirm claim absolute certainty. mean take exact same code , show swapping v.1.4.14 1.4.11 alone causes problem.
fwiw, can simplify custom constructor omitting observables. simple property definitions do.
var projectaugmented = function() { this.lastfirstname = ""; this.projectnametemp = ""; this.flushyesno = false; }; if can confirm amiss 1.4.14, i'm curious if simplified constructor makes difference.
incidentals
you not need own promise work likes of deferred. breeze query methods you're using return promises.
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 fail clause because it's work in failed promise breeze }; see how crisp without superfluous promise dreck?
Comments
Post a Comment