2016-09-23 3 views
0

Я использую breezejs для запроса IQueryable на сервере. Проблема возникла из-за того, что у меня есть строка look look javascript, которая на сервере является строкой, а breezejs интерпретирует тип данных строки javascript как Guid. Поскольку я не могу изменить сервер, я нашел, где я должен использовать функцию .toType, чтобы явно указывать тип запроса для конечной точки.BreezeJS .toType error «Невозможно прочитать свойство« push »undefined»

   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) { 

Этот код дает мне ошибку «Невозможно прочитать свойство« push »неопределенного». Без .toType возникает ошибка, связанная с использованием «eq» между guid и строкой. Тип «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. Должны исследовать больше.

Теперь я нашел, если у меня есть прокомментированный код без комментария, я получаю сообщение об ошибке, в противном случае я не получу ошибку и получаю правильный ответ. Таким образом, проблема связана не с .toType, а с breezejs, который рекурсивно ищет родных братьев. Похоже, что он ищет AspNetUserRole в компании и не находит его, но не проверяет, что братья и сестры не являются нулевыми или неопределенными и взрывами. Компания не имеет внешнего ключа для AspNetUserRole, поэтому ничего не должна найти. Кажется, что-то вроде breezejs.

[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; 
    } 

ответ

0

Проблема связана с тем, что я возвращаюсь в «UserRoleViewModel», но я был .toType («AspNetUserRole»); Очевидно, когда я сажусь и думаю об этом.

Смежные вопросы