2017-09-29 1 views
0

Je commence juste avec Dexie, et il me semble que je suis en train de décoller.Dexie.js - table.delete (id) ne fonctionne pas pour la suppression par ligne

J'ai une petite base de données (moins de 1000 lignes), et j'essaie de supprimer chaque ligne une par une une fois que je sais que la ligne a été envoyée à une API distante. Je peux également enregistrer avec succès à la table (qui est définie par un identifiant et une colonne stockant un objet sérialisé)

voici mon code:

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 
    }) 
} 

Tout cela, à l'exception de la déclaration de suppression finale . Des idées sur comment je devrais résoudre ce problème? l'important pour moi est de supprimer sur une base par rangée.

merci d'avance!

Répondre

0

La bonne façon de supprimer chaque ligne doit être sélectionner la ligne spécifique et supprimez-le:

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

0

Je ressentais le même problème, et la réponse de Eugenia Pais n'était pas travaillant pour moi. Ainsi, après quelques tests, j'ai vu le problème était avec le type de la variable: j'utilisais une chaîne, mais un certain nombre est nécessaire, donc voici comment je l'ai résolu:

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

Soyez donc conscient que vous utilisez un nombre comme argument.

0

Le type de la clé de données ne sont pas un problème, vous pouvez le vérifier dans mon exemple ici: example

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

Peut-être que vous essayez de supprimer par une propriété qui n'est pas un indice.

J'espère que ça aide!