Comments (4)
@MrFurther Did you ever resolve your issue? Can we close this?
from angular-indexeddb.
I just did a quick check against my own code (which uses multiple indices), and this seems to be working correctly.
Looking at the source code, Query::$index()
is very straightforward, and just sets an indexName
parameter on the Query:
$index: (indexName) ->
@indexName = indexName
this
eachWhere()
is similarly straightforward, and calls store.index(indexName)
if indexName
is not falsy. (Note that store.index()
is a native function provided by the browser, and is indeed the method that we'd want to be calling here)
eachWhere: (query) ->
defer = @defer()
indexName = query.indexName
keyRange = query.keyRange
direction = query.direction
req = if indexName
@store.index(indexName).openCursor(keyRange, direction)
else
@store.openCursor(keyRange, direction)
@_mapCursor(defer, ((cursor) -> cursor.value), req)
defer.promise
If you're not familiar with CoffeeScript, the compiled JS is very straightforward:
req = indexName ? this.store.index(indexName).openCursor(keyRange, direction) : this.store.openCursor(keyRange, direction);
I stepped through my own code in a debugger, and store.index()
does indeed get called with the correct index name.
A slightly-modified version of my code is as follows:
$indexedDB.openStore('myStore', store => {
var query = store.query().$index('expiration').$lt(oldest);
return store.findWhere(query).then(items => {
console.log(items);
});
});
Mind sharing the portion of code where you create this index and/or add records? I think something else is going wrong here.
from angular-indexeddb.
@schmod many thanks for taking a look!
Here's the part creating the index:
var objStore = db.createObjectStore('records', {keyPath: 'ssn', autoIncrement: true});
objStore.createIndex('date_idx', 'date', {unique: false});
objStore.createIndex('pax_idx', 'pax', {unique: false}, {multiEntry: true});
And here's how I add the records:
$scope.addRecord = function (records) {
$indexedDB.openStore('records', function(store){
$scope.newrecord = {
"pax": $scope.paxlist,
}
store.insert($scope.newrecord).then(function(e){});
};
As you can see on the pic, the pax_idx contains the array as key with strings as values. Even so when I do the query I get empty array as result.
from angular-indexeddb.
The entire paxList
array is getting stored as your key, which probably isn't what you want.
objStore.createIndex('pax_idx', 'pax', {unique: false}, {multiEntry: true});
needs to change to:
objStore.createIndex('pax_idx', 'pax', {unique: false, multiEntry: true});
at which point, "Anna"
, "John"
, and "Martha"
should all be individual keys in pax_idx
.
from angular-indexeddb.
Related Issues (20)
- Adds then retrieves first time. Can't retrieve second time HOT 3
- not able to get error log HOT 2
- Upgrade function ordering HOT 1
- logs in code HOT 3
- Wrong usage of @defer.reject() HOT 6
- Unnecessary runtime bower dependency HOT 1
- Extremely slow calling table.getAll() in IE (11) HOT 9
- t text to bianry HOT 1
- Unable to install HOT 2
- Additional Maintainers Needed
- Not able to use $indexedDB, $indexedDBProvider in angular service HOT 1
- How can i check if a data sore is exist to insert in it and if isn't create new one?
- i need a function to call it for creating new data store? HOT 1
- How can i get existing data store names...Please? HOT 1
- Unable to store an array of objects corresponding to one key HOT 1
- A) READ THIS BEFORE YOU CREATE AN ISSUE
- Detect failure at the time of opening the store HOT 4
- getAll with limits HOT 2
- Difference between .getAll() and .each()? HOT 6
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 angular-indexeddb.