我正在使用breezejs查詢服務器上的IQueryable。這個問題已經出現,因爲我有一個Guid看起來的javascript字符串,在服務器上是一個字符串,而breezejs將JavaScript字符串的數據類型解釋爲Guid。由於我無法更改服務器,因此我找到了應該能夠使用.toType函數來明確告訴端點查詢的類型的地方。BreezeJS .toType錯誤「無法讀取未定義的屬性'推'
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,我會得到一個涉及在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錯誤。必須調查更多。
現在我發現如果我沒有評論的代碼註釋我得到的錯誤,否則我沒有得到一個錯誤,我得到正確的答案。所以問題不在於.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;
}