2017-05-25 2 views
0

Je suis en train de suivre ce tutoriel pour filtrer la réplication entre un pouchdb et une des bases de données CouchDBerreur dans la création de la fonction filtrée sur CouchDB

https://pouchdb.com/2015/04/05/filtered-replication.html

Le problème est lorsque je tente de créer la fonction filtrée la webapp de Fauxton. Dans ma base de données créée, je clique sur la conception de documents> New Docs puis coller la fonction:

{ 
    "_id": "_design/app", 
    "filters": { 
     "by_agent": function(doc, req) { 
     return doc.agent === req.query.agent; 
     }.toString() 
    } 
    } 

et quand je clique sur le bouton Créer document, il se bloque. La console javascript dit

Uncaught SyntaxError: jeton inattendu u en JSON en position 61 à JSON.parse() à t.checkDocIsValid (https://127.0.0.1:6984/_utils/dashboard.assets/js/bundle-b8e0ba71119195edb7ec64b98f53d9b9.js:529:19481) à t.saveDoc (https://127.0.0.1:6984/_utils/dashboard.assets/js/bundle-b8e0ba71119195edb7ec64b98f53d9b9.js:529:19056) ...

comment créer la fonction filtrée dans couchDB? Peut-être que ce n'est pas la procédure ou que je dois le créer sur une autre base de données. Merci d'avance

Répondre

2

Donc, ce que vous essayez de faire est d'utiliser du code JavaScript pour créer une vue. Par conséquent, Fauxton prend uniquement JSON en tant que document.

Voilà comment vous pouvez obtenir le JSON de l'extrait de code JavaScript:

//The snippet you had was a JavaScript object 
 
//Even if it seems like a JSON object, there is a function() declaration followed by a .toString() 
 
//By doing so, it easier to write functions instead of writing them in a raw string. 
 

 
var javascriptObject = { 
 
    "_id": "_design/app", 
 
    "filters": { 
 
     "by_agent": function(doc, req) { 
 
     return doc.agent === req.query.agent; 
 
     }.toString() 
 
    } 
 
    } 
 
    console.info("You should use the following string in your Fauxton Editor:"); 
 
    console.log(JSON.stringify(javascriptObject));

Vous devez utiliser la chaîne suivante au lieu de l'extrait de code JavaScript que vous avez essayé:

{ 
    "_id": "_design/app", 
    "filters": { 
    "by_agent": "function (doc, req) {\n   return doc.agent === req.query.agent;\n  }" 
    } 
} 
+0

merci vous alexis, ça marche! – jmann