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
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"
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