Я использую 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;
}