2013-06-25 3 views
3

Недавно я начал работать с taffydb. Предполагая, что у меня есть это, как мои данныеTaffydb dynamic like 'and' query

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

В качестве предшественника это не будет best ответ на вашу проблему. Но это сработает. :)

Таким образом, у пользователя будет возможность поиска в базе данных с «неизвестным числом переменных». Давайте добавим максимальное количество переменных - возможно, 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

Это, однако, не объясняет, как генерировать db-запрос динамически, вопрос заключается в том, как генерировать динамические запросы, когда количество подобных входов изменяется –

0

Адаптированием @ ответ Якоб-это так что его динамика. Впервые используется 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() 

Протестировано выше - и это сработало для меня.