2016-06-22 6 views
0

J'utilise le module de noeud Cloudant pour modifier ma base de données Cloudant. J'envoie les documents suivants à la db.bulk(params,callback) function.CouchDB bulk delete Node.js

{ docs: [ 
    { "_id": "...", 
    "_rev": "...", 
    "_deleted": true 
    }, 
    { "_id": "...", 
    "_rev": "...", 
    "_deleted": true 
    }, 
    { "_id": "...", 
    "_rev": "...", 
    "_deleted": true 
    }, 
    { ... } 
]} 

Après que j'appelle cette fonction, je n'avoir aucune erreur, mais lorsque je tente et interroger la base de données plus tard, je reçois toujours les documents supprimés en arrière? Je sais que Cloudant a des "documents tombstone" donc ils devraient toujours être là mais je ne vois pas vraiment de pierres tombales du tout Je vois juste les documents que je voulais effacer assis dans ma base de données avec un nouveau numéro et reviens comme s'ils sont encore actif.

Même lorsque j'essaie d'interroger la base de données avec un sélecteur supprimé: vrai, je ne reçois rien en retour.

Ai-je raté quelque chose?

P.S Si vous vous demandez pourquoi je mets « _deleted » dans le document en vrac, je ne faisais que suivre ce que this site said to do.

+1

Dans une opération en bloc, certains changements peuvent échouer tandis que d'autres réussissent. Avez-vous vérifié la réponse réelle plutôt que simplement le paramètre 'err'? – OrangeDog

+0

Oui je l'ai fait et il repasse le nombre _id et _rev pour chaque document qui est le comportement attendu pour la suppression de documents selon la documentation [sur cette page] (http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API). – Danwakeem

+0

Et lorsque vous les interrogez plus tard, ont-ils le _rev qui a été retourné, le _rev original, ou quelque chose d'autre? – OrangeDog

Répondre

1

Dans une opération en vrac, certains changements peuvent échouer tout les autres à réussir.

Vous devez vérifier la réponse réelle pour chaque mise à jour plutôt que le paramètre err. Même si err est null, il se peut que chaque mise à jour ait échoué pour une raison individuelle, par exemple un conflit de révision.