2016-09-09 2 views
-1

В настоящее время я использую indexdDB для хранения автономных данных некоторых записей в торговом магазине. В хранилище есть такие столбцы, как id, shopname и lastsaledate. Я хотел бы, чтобы какая-то помощь выполняла ту же операцию, что и следующая инструкция SQL, с помощью indexedDB:Найти MAX (date) из HTML5 indexedDB

SELECT MAX(LastSaleDate) FROM Sales; 

Любые предложения?

+2

вы пробовали что-нибудь еще, или вы просто просите для кого-то написать код для вас? –

+0

Я ввожу все данные в массив, а затем попытаюсь найти ** MAX ** из этого массива. но все напрасно из-за ** DATE DataType **. :-) Теперь я собираюсь попробовать что-то другое. ;-) @Boris –

ответ

0

Убедитесь, что у вас есть индекс для свойства lastsaledate, например. при обновлении базы данных сделать:

store.createIndex('by_lastsaledate', 'lastsaledate'); 

При выполнении запроса, используйте обратный курсор («предыдущую») и нулевой диапазон (т.е. всех записи):

var store = transaction.objectStore('records'); 
var index = store.index('by_lastsaledate'); 
var request = index.openCursor(/*query*/null, /*direction*/'prev'); 
request.onsuccess = function() { 
    var cursor = request.result; 
    if (cursor) { 
    console.log('max date is: ' + cursor.key); 
    } else { 
    console.log('no records!'); 
    } 
}; 
+0

что делать, если данные уже были в какой-то ** живой базе данных **. И я синхронизирую данные из этого ** live DB ** и вставляю его в ** индексированный DB ** на стороне клиента! –

+0

Вы можете создать индекс в существующем магазине, столкнувшись с номером версии и создав индекс в обработчике обработанных обновлений. Спецификация имеет примеры во введении https://w3c.github.io/IndexedDB/#introduction - ищите «Версия 2 вводит новый индекс книг по годам» –