2016-09-08 44 views
1

我沒有找到以下問題的答案。如何使用dexie爲給定的數據結構形成查詢

給出以下數據結構。我想找出壓力在8500的時間(30)。我不知道如何在那裏形成查詢。

有人能幫助我嗎?謝謝。

親切的問候

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 }, 
    ] 
    }); 
}); 

回答

1

如果只針對鉻,歌劇,Firefox和Safari 10,使用複合索引。你索引你用[時間+壓力]這是時間和壓力的組合,然後查詢

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

如果你需要瞄準IE,邊緣和Safari < 10的數據,你需要選擇一個指數並添加其餘的JS過濾器:

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

您好大衛, 謝謝你的幫助。它應該像這樣工作:用戶想知道壓力8500的時間。他將該值(8500)放入輸入字段,並且dexie必須搜索相應的時間。 數據庫就像一個查詢表。你能再幫我一次嗎?謝謝 親切的問候Achim – Achim

+0

... my_db.hose.where('pressure')。equals(8500)... ist empty。有一個關鍵(關鍵路徑)'meassuredValues',但裏面沒有任何對象。我不知道爲什麼。 – Achim

+0

似乎是正確的。你確定你有你的數據庫中的數據?你如何執行你的查詢?使用toArray(),each()或first()?你是否正確地使用了最終的承諾? –

相關問題