2017-09-29 3 views
0

J'utilise node-red pour communiquer avec cloudant et pour chaque fois que mon flux s'exécute, il se peut que la quantité de ID: s arrive dans msg.payload. Plus tard, je veux utiliser ces id: s pour afficher tous les objets pertinents. Est-il possible de rechercher plusieurs ID: s d'une manière ou d'une autre? Ou avez-vous une autre solution? Impossible de trouver quoi que ce soit sur cette atm en ligneRechercher un ID multiple: s dans cloudant

Répondre

0

Il semble que Node-RED supporte l'interrogation par _id, un index de recherche, ou tous les documents. Lorsque vous utilisez _id, il ne semble pas possible de spécifier plus d'un ID. Vous pouvez toutefois utiliser un index de recherche pour rechercher plusieurs ID.

Créer un index de recherche dans Cloudant similaire à ce qui suit:

{ 
    "_id": "_design/allDocSearch", 
    "views": {}, 
    "language": "javascript", 
    "indexes": { 
    "byId": { 
     "analyzer": "standard", 
     "index": "function (doc) {\n index(\"id\", doc._id);\n}" 
    } 
    } 
} 

Cela correspond à ce qui suit lors de l'utilisation du tableau de bord Cloudant:

conception doc = allDocSearch

nom d'index = byId

indice fonction =

function (doc) { 
    index("name", doc.name); 
} 

Pour rechercher plusieurs ID votre requête ressemblerait à quelque chose comme ceci:

id:"1" OR id:"2" 

En nœud rouge configurer votre noeud Cloudant pour pointer vers la base de données appropriée, spécifiez un « Recherche par » de search index, et configurez votre document de conception et votre nom d'index (dans ce cas, il s'agit de allDocSearch/byId).

Vous pouvez tester avec un simple nœud d'injection avec une charge utile similaire à la requête de recherche ci-dessus: id:"1" OR id:"2"

+0

Merci! C'est une excellente solution. J'ai également réussi à résoudre le problème en divisant les objets afin qu'il boucle et recherche un identifiant à la fois – danielo