2012-01-31 55 views
2

我真的很喜歡underscore mixin數據查詢,underscore-data。這對我目前正在進行的一個項目來說是完美的。但是要麼我不能讓它工作,要麼我不知道如何使用該工具,RQL implementation如何使用下劃線數據(以前稱爲underscore.query)

pc = { 
    columns: [ 
    { 
     title: "3column-left", 
     text: "text", 
     image: null 
    } 
    ] 
} 

我要測試是否/列/列/文本存在。但是,我可以讓圖書館提供真實或虛假的價值。例如,這兩個查詢返回原pc對象:

_.query(pc, 'columns&columns/text') 
_.query(pc, 'columns&columns/fubar') 

試圖測試給定值時,這是同樣的事情。這兩個查詢都會返回原始對象,儘管第二個查詢不應返回任何內容。

_.query(pc, 'columns/title', '3column-left') 
_.query(pc, 'columns/title', 'doesntExist') 

任何洞察力的讚賞。

回答

0

這裏的問題是,你引用textcolumns的屬性,而不是columns的元素的性質(columns是一個數組)

之一。爲了解決這個問題,你就必須構建你RQL如下:

旁白:用戶還可以利用正則表達式:

_.query(pc, 'columns/0/title=re:left'); // exists 
_.query(pc, 'columns/0/title=re:right'); // doesn't exist 

這種方法有明顯的限制,必須知道你想查詢的對象的數組索引。

基本信息可以在這裏找到:https://github.com/dvv/underscore-data/blob/master/README-rql.md,遺憾的是沒有提及數組訪問。

更新: 值得一提的是,在_.query功能的第三個參數用於選項,以便用它喜歡:

_.query(pc, 'columns/title', '3column-left') 

不會產生你想要的效果。

+0

感謝您的反饋。但是這些查詢不起作用。將文本引用爲列的屬性不是問題。因此,請參閱[下劃線數據自述文件](https://github.com/dvv/underscore-data/blob/master/README-rql.md)中的第一個示例。 (a = 1,b:2},{a:3,b:2}],'(a = 1 | b = 2)')=== [{a:1,b :2},{a:3,b:2}]'。請注意,該查詢未引用a = 1或b = 2應位於數組的第一個元素中的事實。這會挫敗查詢的目的,目的是找到這個元素。所以使用你的查詢,我得到空的結果。 – Nutritioustim 2012-03-21 14:50:01

+0

我不清楚你在查詢中想達到什麼目的。 「a = 1或b = 2應該在數組的第一個元素中」是什麼意思? – jlb 2012-03-22 11:18:30

+0

Heyya。對,所以我給出的查詢是該自述文件中的第一個示例。並且查詢'(a = 1 | b = 2)'應該對數據結構'[{a:1,b:2},{a:3,b:2}]'進行操作。你說我必須知道索引才能查詢結構。我說這打破了查詢的目的。我實際上向作者提交了一個錯誤報告。 [見這裏](https://github.com/dvv/underscore-data/issues/1)。希望這是有道理的。希望作者修復它,因爲這將是一個很好的工具。 – Nutritioustim 2012-03-22 23:50:31