Breeze 本地查询使用“忽略/忽略投影”;选择";

Breeze 本地查询使用“忽略/忽略投影”;选择";,breeze,Breeze,模型(多对多关系的公开映射表): 远程和本地查询的两种通用方法: getAllOfTypeSelectRemote = function (manager, success, failed, resource, orderBy, predicate, select) { var query = EntityQuery .from(resource) .where(predicate)

模型(多对多关系的公开映射表):

远程和本地查询的两种通用方法:

getAllOfTypeSelectRemote = function (manager, success, failed, resource, orderBy, predicate, select) {
            var query = EntityQuery
                .from(resource)
                .where(predicate)
                .using(manager)
                .select(select)   //<------
                .orderBy(orderBy);
            return query.execute()
                .then(success)
                .fail(failed);
        },

getAllOfTypeSelectLocally = function (manager, resource, orderBy, predicate, select) {
            var res = null;
            try {
                res = EntityQuery
                .from(resource)
                .where(predicate)
                .select(select)   //<-----
                .orderBy(orderBy)
                .using(manager)
                .executeLocally();
            } catch (e) {
                logger.error('resource: ' + resource + '<br>select: ' + select + '<br>orderBy:' + orderBy, 'Local query failed!');
            }
            return res;
        };
本地查询只是忽略select并返回一个TeamUser数组 结果:

将“selectStr”修改为类似“bla”的无效类型不会引发异常。
为什么省略select,这应该是这样的吗?

从V0.74.3开始,这应该是固定的;i、 e.select子句现在将由本地查询和远程查询正确解释。希望这有帮助

查看源代码,Breeze似乎没有将
select
子句应用于缓存查询。我已经在内部提交了一份缺陷报告。同时,你能在过滤结果上使用
Array.Map
来解决这个问题吗?我现在使用的是远程版本,它可以工作。如果我有时间,我会尝试让本地版本工作。嗨,ArrayMap或ArrayFilter(来自淘汰赛)工作得很好。
getAllOfTypeSelectRemote = function (manager, success, failed, resource, orderBy, predicate, select) {
            var query = EntityQuery
                .from(resource)
                .where(predicate)
                .using(manager)
                .select(select)   //<------
                .orderBy(orderBy);
            return query.execute()
                .then(success)
                .fail(failed);
        },

getAllOfTypeSelectLocally = function (manager, resource, orderBy, predicate, select) {
            var res = null;
            try {
                res = EntityQuery
                .from(resource)
                .where(predicate)
                .select(select)   //<-----
                .orderBy(orderBy)
                .using(manager)
                .executeLocally();
            } catch (e) {
                logger.error('resource: ' + resource + '<br>select: ' + select + '<br>orderBy:' + orderBy, 'Local query failed!');
            }
            return res;
        };
var selectStr = 'User'; //<------

            var p1 = new breeze.Predicate("Team.TeamName", Qop.Equals, team);
            var p2 = breeze.Predicate("User.UserName", Qop.NotEquals, username);
            var predicate = p1.and(p2);

            //var res = dsUtils.getAllOfTypeSelectRemote(manager, success, queryFailed, 'TeamUsers', 'User.Nachname, User.Vorname', p1, select);
            var res = dsUtils.getAllOfTypeSelectLocally(manager, 'TeamUsers', 'User.Nachname, User.Vorname', p1, selectStr);
data.results = [{"User": {...}}, {"User": {...}}] 
res=[{ Here are the fields of TeamUsers }, { Here are the fields of TeamUsers }]