order by(単一フィールド) |
indexedDB |
| next | 昇順(SQLでいうasc) |
| prev | 降順(SQLでいうdesc) |
//sortType:[0]asc [1]desc
async function testOrderBy(dbName, storeName, sortType)
{
const db = await databaseOpen(dbName);
await runTx(db, storeName, "readwrite", (store) =>
{
// get cursor data
const transaction = db.transaction([storeName], 'readonly');
const objectStore = transaction.objectStore(storeName);
const index = objectStore.index('f1'); //use "f1" index
const cursorRequest = index.openCursor(null, sortType == 0 ? "next" : "prev");
cursorRequest.onsuccess = (event) =>
{
const cursor = event.target.result;
if (cursor)
{
console.log(cursor.value); //display sort cursor data
cursor.continue();
}
else
{
console.log('get all of data.');
}
};
});
db.close();
}
function waitForTx(tx)
{
return new Promise((resolve, reject) =>
{
tx.oncomplete = () => resolve();
tx.onabort = () => reject(tx.error ?? new Error("Transaction aborted"));
tx.onerror = () => reject(tx.error);
});
}
async function runTx(db, storeName, mode, work)
{
const tx = db.transaction([storeName], mode);
const store = tx.objectStore(storeName);
const result = await work(store);
await waitForTx(tx);
return result;
}
function databaseOpen(dbName)
{
return new Promise((resolve, reject) =>
{
const req = indexedDB.open(dbName);
req.onsuccess = (event) =>
{
resolve(event.target.result);
};
req.onerror = () => reject(req.error);
});
}
testOrderBy("sampleDB", "t2", 0);
console.log("-----");
testOrderBy("sampleDB", "t2", 1);
| ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。 ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、ホームペーよびアプリ利用したいかなる理由によっての障害等が発生しても、 その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |