BreezeJS .toType error "Cannot read property 'push&

本文关键字:property push read Cannot toType quot BreezeJS error | 更新日期: 2023-09-27 18:08:26

我使用breezejs来查询服务器上的IQueryable。问题已经出现了,因为我有一个Guid javascript字符串,在服务器上是一个字符串和breezejs解释javascript字符串的数据类型作为Guid代替。由于我无法更改服务器,因此我发现应该能够使用. totype函数显式地告诉breeze端点查询的类型。

                var data = "e65ec82e-8b58-4a56-9c3f-a02a44d36045";
                var predicate = { "UserId": { "==": data } };
                var query = breeze.EntityQuery.from('UserRoleApi/Search');
                if (predicate != null) {
                    query = query.where(predicate).toType('AspNetUserRole');
                }
                query = query.skip(page * pageSize).take(pageSize);
                breezeservice.executeQuery(query).then(function (data) {

这段代码给了我错误"Cannot read property 'push' of undefined"。如果没有。totype,我会得到一个涉及在guid和字符串之间使用'eq'的错误。在元数据中找到并更正了'AspNetUserRole'类型。如有任何帮助,不胜感激。

似乎我的问题在breeze.js文件中。

if (newValue != null) {
      debugger;
    var siblings = newValue.getProperty(inverseProp.name);
    // recursion check if already in the collection is performed by the     relationArray
    siblings.push(parent);
  }

兄弟姐妹是未定义的。不确定这是否是breezejs bug。

现在我发现,如果我有注释代码未注释,我得到错误,否则我不会得到错误,我得到正确的响应。所以问题不在于。totype,而在于breezejs递归地寻找实体的兄弟姐妹。它看起来像是在寻找公司上的AspNetUserRole,但没有找到它,但没有检查兄弟姐妹是否为空或未定义,然后爆炸。公司没有AspNetUserRole的外键,所以它应该找不到任何东西。对我来说像是微风虫。

[HttpGet]
    public IQueryable<UserRoleViewModel> Search()
    {
        var response = repository.Search().Select(x => new UserRoleViewModel()
        {
            Id = x.Id,
            UserId = x.UserId,
            RoleId = x.RoleId,
            CompanyId = x.CompanyId
            //Company = new CompanyViewModel()
            //{
            //    Id = x.Company.Id,
            //    Name = x.Company.Name
            //},
            //User = new UserViewModel()
            //{
            //    Id = x.AspNetUser.Id,
            //    UserName = x.AspNetUser.UserName
            //},
            //Role = new RoleViewModel()
            //{
            //    Id = x.AspNetRole.Id,
            //    Name = x.AspNetRole.Name
            //}
        });
        return response;
    }

BreezeJS .toType error "Cannot read property 'push&

问题与我返回一个"UserRoleViewModel"但我是。totype ('AspNetUserRole');当我坐下来仔细想想的时候,很明显。