В основном я хочу выбрать все значения, которые соответствуют индексу / ключу, но они не находятся в диапазоне программно.Он должен быть в состоянии выбрать диапазон запросов (как в переменном количестве за один раз).В SQL я бы сделал это следующим образом.
Select * FROM questions WHERE `id` in (2,45,17)
Но когда дело доходит до индексированного БД, мои возможности кажутся ограниченными.Я обнаружил, что могу выполнять несколько запросов последовательно, но как бы я это сделал, не зная, сколько из них будет выбрано заранее?
Вот текущий JavaScript, который я использую.Очевидно, это не работает.Я уже создал базу данных indexedDB с именем "Practice_materials", создал хранилище объектов с именем "questions", создал индекс по id и поместил в него данные.
window.idb=window.indexedDB;
var request=indexedDB.open(db_name,db_version);
request.onerror=function(event){
console.log('error:'+event);
}
request.onsuccess=function(event){
db_res=request.result;
}
var tx=db_res.transaction([obj_store]).objectStore(obj_store);
var res='';
var out_obj=[];
var id=[2,45,17];
for(i=0;i<3;++i){
request=tx.get(id[i]);
request.onsuccess=function(event){
out_obj.push(request.result);
}
}
Для всех будущих людей, которые сталкиваются с этим вопросом,используйте idb для выхода из ада обратного вызова, чтобы ваш код мог дождаться завершения базы данных / других транзакций, прежде чем пытаться получить к нему доступ.
https://github.com/jakearchibald/idb
Единственное, чтоВы должны создать его для своего браузера, который стоит того, чтобы иметь обещания и иметь возможность ждать, пока транзакция не завершится. (В первую очередь, при открытии базы данных, получении индексов, выборе хранилища объектов и т. д., настройка данных не имеет значения, так какмного, но все еще приятно иметь. PS Я собираюсь использовать это для системы вопросов и ответов в качестве учебного пособия для студентов по анатомии. Он будет выбирать случайное количество вопросов из каждой главы (которую я сделал) и диапазон будет от 15-25 с вопросами, которые будут выбраны случайным образом. Я бы использовал WebSQL, поскольку я, вероятно, могу сделать это намного проще, но это приветствуется.
PPS Кроме + Rep для правильного ответа Iдобавлю ссылку на этот вопрос.