Taffydb динамически, как 'и' запрос

Я недавно начал работать с taffydb. Предполагая, что у меня есть это в качестве моих данных

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. К сожалению, я не могу понять, как сделать это с динамическим запросом, который будет иметь неизвестное количество переменных для поиска. Я делаю это, чтобы позволить пользователю искать свои собственные слова.

У кого-нибудь есть идеи?

3 ответа

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

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

Адаптируем ответ @Jacob-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() 

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

Вы можете сделать это так

      let items = [];
items.push({description:{likenocase:"one two"}});
items.push({description:{likenocase:"three"}});

db(...items).get()
Другие вопросы по тегам