Je veux que de base compter le nombre d'enregistrements dans ma base de données indexeddb.
Actuellement, mon code ressemble à p>
J'adorerais pour cela pour dire que cela dit que ça veut dire seulement 3, mais Au lieu de cela, je reçois. P> Sortie forte> p> ce qui est correct mais je veux juste qu'il ne soit pas chargé d'autres choses. p> p>
3 Réponses :
Un peu d'introduction dans l'ordre. De mon Documents personnels sur transactions:
Certaines transactions Données de retour, ou "résultats", de la base de données. Ces transactions sont appelées «demandes» et à l'exception de Ouverture de la base de données, les valeurs sont toujours diverses combinaisons d'objet "Keys" et "valeurs" et instances d'idbrequest. Demander des transactions sont juste que: une demande de transaction », à savoir l'acte de demander quelque chose plutôt que de l'obtenir. Un programmeur les rencontre Lorsque vous traitez avec des objets IDBObjectStore, IDBIDEX ou IDBCursor. p> blockQuote>
Ce que vous cherchez est un objet
idbrequest code>, qui est renvoyé par la méthode
compteur () code>. Qui représente la demande de données, et non les données elles-mêmes. P>
Les données elles-mêmes sont disponibles après les incendies de code code> code> et sont accessibles via le
idbrequest.result Code> Propriété. P>
Voici une méthode de comptage testée de ma bibliothèque, Dash : p>
xxx pré> Je dois noter que j'aurais probablement besoin d'utiliser le code> Evénement code> plutôt que l'événement code> succès code>. Je ne peux pas expliquer pourquoi mais parfois les valeurs de résultats ne sont pas disponibles dans
Succès Code> Callbacks. p> p>
Pourriez-vous expliquer comment implémenter cela dans mon code? Je vous remercie vraiment de prendre le temps d'expliquer votre réponse
Bien sûr! Je pense que vous voulez attacher un rappel à la transaction que vous avez créée et écoute pour son achèvement. Puis atteindre dans événement.Result code> et vous devez trouver un entier représentant le nombre d'objets: Gist.github.com/editor/21AEEFD96E6B853C5671
Lorsque j'essaye cela, je suis compté indéfini, je vais essayer de le déboguer
J'ai choqué sur le gist. Essayez de vérifier comte.result code> (il devrait être mis à jour maintenant). C'est le
idbrequest code> qui a une valeur, pas l'événement.
Boom, toi Dieu! Merci. Je viens de recoder un site Web localStorage et de tout convertir. Indexeddb semble vraiment bon juste qu'allot d'apprendre, je suppose mais avec la quantité de stockage, je suppose que c'est va être utile beaucoup plus!
Voici à espérer. Suivez-moi sur Twitter si vous voulez plus de nouvelles idb. Essayer d'aider à créer une communauté autour des gens à l'aide de la technologie
Je vais m'assurer de garder mes yeux ouverts, je vais essayer de rester actif sur cette section. Suivi :)
"Parfois, les valeurs de résultats ne sont pas disponibles" peuvent être liées à ce numéro lis.w3.org/archives/public/public-webapps/2014Janmar/... Je préfère comme comportement actuel, c'est-à-dire que vous devez utiliser la transaction complète pour obtenir un résultat défini. Mais le gain de performance n'est pas ignorable.
Votez-le parce que cela ressemble davantage à une promotion de la propre bibliothèque du répondant qu'une véritable réponse à la question de l'OP.
Essayez quelque chose comme ceci:
var transaction = db.transaction(["data"], "readonly"); var objectStore = transaction.objectStore("data"); var count = objectStore.count(); count.onsuccess = function() { console.log(count.result); };
Est Var Cursor = ObjectStore.Opençage (); obligatoire? +1 pour l'ouvrir à la lecture-là.
Pour itération à travers les objets uniquement, le curseur est requis .. Ici, il n'est pas nécessaire.
ramener le compte d'enregistrement avec un peu moins de code:
Juste pour clarifier, vous souhaitez compter le nombre d'objets dans votre
ObjectStore code> plutôt que la base de données
code>? Vous pouvez compter le nombre de
Objectstores code> au niveau de la base de données mais pas d'objets eux-mêmes.