2017-09-29 66 views
0

我剛剛開始與Dexie,並且我似乎正在脫落。Dexie.js - table.delete(id)不適用於每行刪除

我有一個小型的數據庫(少於1000行),我試圖一次性刪除每一行,一旦我知道該行已發送到遠程API。 我也可以成功地保存到表(由ID定義和存儲序列化對象列)

這裏是我的代碼:

if (online) { 
    //we query the db and send each event 
    database.open() 
    let allEvents = database.events.toCollection() 
    let total = allEvents.count(function (count) { 
     console.log(count + ' events in total') 
     //a simple test to ensure we're seeing the right number of records 
    }) 
    allEvents.each(function(thisEvent){ 
     //push to remote API 
     console.log('deleting ' + thisEvent.id) 
     database.events.delete(thisEvent.id) //<= this doesn't seem to be working 
    }) 
} 

所有這一切都與最後的delete語句外。 關於如何解決此問題的任何想法?對我來說重要的是要逐行刪除。

在此先感謝!

回答

0

刪除每一行應該選擇特定的行並刪除它的正確方法:

database.tableName.where(indexId).equals(indexValue).delete();

0

我遇到同樣的問題,並從尼婭派斯答案是不爲我工作。所以一些測試後,我看到了麻煩的是與變量的類型:我使用的是字符串,但需要一個數字,所以這是我如何解決它:

function removeRow (primaryKey) { 
    primaryKey = parseInt(primaryKey); 
    databaseName.tableName.where('primaryKey').equals(primaryKey).delete().then(function(deleteCount) { 
    console.log ("Deleted " + deleteCount + " rows"); 
    }).catch(function(error) { 
    console.error ("Error: " + error); 
}); 

所以,要知道你正在使用一個數字作爲論點。

0

關鍵的數據類型是不是你可以驗證它在我這裏例如一個問題:example

db.example.where('key').equals('one').delete(); 

也許你正試圖通過不爲索引的屬性刪除。

希望它有幫助!