Comments (4)
If you can provide a self-contained reproduction of this issue, I would be happy to investigate!
from fakeindexeddb.
Hi Jeremy (@dumbmatter),
Thank you for looking at this issue. I tried to isolate it into a single jest test file that depends on Dexie and fakeIndexeddb only. Here is the gist.
While working on the gist I realized that this may be an indexeddb spec related issue. Not sure if you have the answer.
I expect orderBy on a non-unique, secondary key to return all records in the table in some reasonable order. For records that have an empty value for the ordering key, I expect them to show up at the beginning or the end of the ordered array, instead of not-appearing at all in the result.
Thank you again. This is an incredibly helpful project!
Ivelin
from fakeindexeddb.
Here is a minimal reproduction that runs in Node.js or in the browser:
(async () => {
let Dexie;
if (typeof require !== "undefined") {
require("fake-indexeddb/auto");
Dexie = require("dexie");
} else {
Dexie = (await import("https://unpkg.com/dexie?module")).Dexie;
}
const localdb = new Dexie("test")
localdb.version(1).stores({
test: "&primaryKey, indexKey"
})
const getAll = async () => {
const array = await localdb.test.toArray();
return array;
};
const getAllSorted = async () => {
const array = await localdb.test.orderBy("indexKey").toArray();
return array;
};
await localdb.test.clear();
await localdb.test.put({
primaryKey: 0,
});
const array = await getAll();
console.log(array);
const array2 = await getAllSorted();
console.log(array2);
})();
I get the same output with both:
$ node test.js
[ { primaryKey: 0 } ]
[]
so I am going to close this issue, but feel free to reopen if I am missing something :)
I expect orderBy on a non-unique, secondary key to return all records in the table in some reasonable order. For records that have an empty value for the ordering key, I expect them to show up at the beginning or the end of the ordered array, instead of not-appearing at all in the result.
You could just sort them in JS after retrieving them from the DB, without using the index. Unless you have some very special situation (like if you're doing this same operation a billion times on large arrays), you would probably not notice any performance difference.
from fakeindexeddb.
OK, fair enough. Thank you for the prompt turnaround! Hope you enjoy the rest of your weekend :)
from fakeindexeddb.
Related Issues (20)
- Index on Date type does not work HOT 7
- initialize the DB before the use. HOT 2
- Add observation for Dexie users HOT 3
- [BUG] Context loosing for `FakeDOMStringList` members while wrapping IDB
- [BUG] Invalid behavior for concurrent insertion data HOT 1
- Ref of Observable from liveQuery is not reactive HOT 7
- fake-indexeddb fails when happy-dom is loaded prior to fake-indexeddb HOT 3
- Running this in Chrome throws "Cannot set property indexedDB of #<Window> which has only a getter" HOT 3
- Release new version to npm with latest types fix HOT 3
- DataCloneError: The data being stored could not be cloned by the internal structured cloning algorithm. HOT 2
- Problem storing and retrieving CryptoKeys HOT 2
- structuredClone and jsdom HOT 7
- `Uint8Array` keys don't respect offsets from underlying ArrayBuffers HOT 3
- Serializing (and restoring) the state of Fake IDB HOT 2
- Unable to use in tests that mock timers (e.g. overriding `globalThis.setImmediate`) HOT 6
- `IDBObjectStore.count` is `O(n^2)` HOT 3
- Try using built-in Node.js Blob HOT 1
- How to read one of the chrome database HOT 1
- A value which is actually Date, but instanceOf Date equals false when use with jest+jsdom. HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fakeindexeddb.