2016-09-08 1 views
1

Je n'ai pas trouvé de réponse pour le problème suivant.Comment faire une requête pour une structure de données donnée avec dexie

La structure de données suivante est donnée. Je veux savoir le temps (30) pour la pression à 8500. Je ne sais pas comment former la requête là pour.

Quelqu'un peut-il m'aider? Je vous remercie.

Sincères salutations

my_db.version(1).stores({ 
    hose: "++, &deviceId, hoseName, *meassuredValues" 

my_db.open().then(function() { 
    my_db.hose.add({ 
    deviceId: "11", 
    hoseName: "DN 20", 
    meassuredValues: [ 
     { pressure: 10000, time: 0 }, 
     { pressure: 9958, time: 10 }, 
     { pressure: 9000, time: 20 }, 
     { pressure: 8500, time: 30 }, 
     { pressure: 8000, time: 40 }, 
    ] 
    }); 
}); 

Répondre

1

Si vous ciblez que Chrome, Opera, Firefox et Safari 10, utiliser les index composés. Vous seriez vos données avec index [temps + pression] qui est une combinaison de temps et de la pression, puis interroger

my_db.hose.where('[time+pressure]').equals([30, 8500]).toArray(); 

Si vous devez cibler IE, Edge et Safari < 10, vous devrez choisir un index et ajouter un filtre JS du reste:

my_db.hose.where('pressure').equals(8500).and(function (x) { 
    return x.time === 30; 
}).toArray(); 
+0

Bonjour David, merci de l'aide. Cela devrait fonctionner comme ça: Un utilisateur veut connaître l'heure de la pression 8500. Il met cette valeur (8500) dans un champ de saisie et dexie doit chercher l'heure correspondante. La base de données ressemble à une table de consultation. Pouvez-vous m'aider encore une fois? Merci Cordialement Achim – Achim

+0

... my_db.hose.where ('pression'). Est égal à (8500) ... ist empty. Il y a une clé (clé) "meassuredValues", mais il n'y a pas d'objet à l'intérieur. Je ne sais pas pourquoi. – Achim

+0

Cela semble correct. Etes-vous sûr d'avoir les données dans votre base de données? Comment exécutez-vous votre requête? En utilisant toArray(), each() ou first()? Consommez-vous la promesse qui en résulte correctement? –