2013-06-25 17 views
3

我最近開始使用taffydb。假設我有這個作爲我的數據Taffydb dynamic like'and'查詢

db= TAFFY([ 
{OrderNo:'prod1',range: 3,description:'one two'}, 
{OrderNo:'prod2',range: 2,description:'one two three'}, 
{OrderNo:'prod3',range: 2,description:'one three two'}, 
{OrderNo:'prod4',range: 6,description:'one two four three'}, 
{OrderNo:'prod5',range: 5,description:'three'},... 

如果我想編寫一個查詢找到與「一二」的所有記錄「三大」我會做這樣的事情

db({description:{likenocase:"one two"}},{description:{likenocase:"three"}}).get() 

將返回產品2和4.不幸的是,我不知道如何做到這一點與一個動態查詢將有未知數量的變量進行搜索。我這樣做是爲了讓用戶搜索他們自己提供的單詞。

任何人有任何想法?

回答

0

作爲一個前兆,這不會是你的問題的答案最好答案。但它會起作用。 :)

因此,用戶可以選擇使用「未知數量的變量」搜索數據庫。讓我們添加一個最大數量的變量 - 大概是10?

現在我們捕捉到所有用戶的搜索變量數組:

// Create a dynamic array 
var userSearchVars = []; 

// Fill the array from 10 HTML input type=text fields 
// You can fill your array however you fancy. This is just one example! 
$("#myForm input[type=text]").each(function() { 
    userSearchVars.push($(this).val()); 
} 

// Note: by default an empty input will return the empty string: "" 

使用您的代碼段,只查詢與陣列數據庫:

db(
    {description:{likenocase:userSearchVars[0]}}, 
    {description:{likenocase:userSearchVars[1]}}, 
    {description:{likenocase:userSearchVars[2]}}, 
    {description:{likenocase:userSearchVars[3]}}, 
    {description:{likenocase:userSearchVars[4]}}, 
    {description:{likenocase:userSearchVars[5]}}, 
    {description:{likenocase:userSearchVars[6]}}, 
    {description:{likenocase:userSearchVars[7]}}, 
    {description:{likenocase:userSearchVars[8]}}, 
    {description:{likenocase:userSearchVars[9]}} 
).get() 
+0

但是這並沒有解釋如何動態生成數據庫查詢,問題是如何生成動態的類似查詢,當類似的輸入數量變化 –

0

適應@雅各布-IT的回答如此它的動態。今晚第一次使用Taffy,剛發現你可以傳遞一組對象作爲查詢參數。

// Create a dynamic array 
var userSearchVars = []; 

// Fill the array from 10 HTML input type=text fields 
// You can fill your array however you fancy. This is just one example! 
$("#myForm input[type=text]").each(function() { 
// This is my edit - push the whole query on to the array. 
    userSearchVars.push({description:{likenocase: $(this).val() }}); 
} 
// Then pass the whole query array in... 
db(userSearchVars).get() 

經過上述測試 - 它爲我工作。