2013-04-10 42 views
4

我有一個搜索字段的文本輸入,其中字符串被傳遞給EntityQuery。當查詢包含單引號時,我收到如下消息:BreezeJS中包含單引號或雙引號的字符串查詢返回錯誤

'substringof(O'Malley,FirstName)eq true'中的位置39有一個未終止的字符串字面值。

時只是硬編碼本查詢有時甚至會出現:

var query = breeze.EntityQuery 
       .from("Users") 
       .expand("GroupUsers.Group") 
       .where("lastName", "contains","O'Malley") 
       .skip(skipAmt) 
       .take(pageSize) 
       .inlineCount(true); 

我試着做雙單引號或做逃逸單引號\」,它仍然有一個錯誤回來。這與雙引號也會發生類似的情況。什麼是轉義字符串文字字符的正確方法?

回答

4

我不能重複這一點。你應該能夠逃脫一個'通過簡單地加倍。例如,以下查詢在v 1.2.8上沒有問題。

var q = EntityQuery.from("Employees") 
     .where("lastName", "contains", "O''Malley"); 

如果您將查詢簡化爲Where子句,是否仍然會出現問題?

+0

這適用於我。當我試圖用單引號加倍的方式逃脫它時我錯了。現在,當查詢字符串進來時,我只是運行'filterText = filterText.replace(/'/ g,「''」)' – cobywhite 2013-04-17 18:27:32

+1

這不應該被認爲是微風中的錯誤?我會希望它能夠爲我逃避。 – larspars 2014-01-03 15:06:35

+2

下一個版本1.4.8將做到這一點。它應該在一週左右出來。 – 2014-01-03 17:39:51

相關問題