2015-08-10 1 views
0

Dans mon application Bluemix Nodered, j'essaie de faire une requête SqlDB, mais je ne trouve pas de documentation ou d'exemples suffisants sur la façon d'utiliser les marquages ​​de paramètres dans le question. Y a-t-il des exemples et d'autres informations sur ce que je fais de mal? Voici le flux que j'ai des problèmes avec:Requête Bluemix SQLDB - Impossible de trouver les marquages ​​de paramètres JSON

[ 
    {  
     "id":"7924a83a.03355", 
     "type":"websocket-listener", 
     "path":"/ws/dbdata", 
     "wholemsg":"false" 
    }, 
    { 
     "id":"b84efad2.9a2a58", 
     "type":"function", 
     "name":"Parse JSON", 
     "func":"msg.payload = JSON.parse(msg.payload);\nvar begin = msg.payload[0].split(\" \");\nbegin[1] = begin[1]+\":00\";\nvar date1 = begin[0].split(\"-\");\nvar processStart = date1[2]+\"-\"+date1[0]+\"-\"+date1[1]+\" \"+begin[1];\n\nvar end = msg.payload[0].split(\" \");\nend[1] = end[1]+\":00\";\nvar date2 = end[0].split(\"-\");\nvar processEnd = date2[2]+\"-\"+date2[0]+\"-\"+date2[1]+\" \"+end[1];\n\nmsg.payload[0] = processStart;\nmsg.payload[1] = processEnd;\nreturn msg;", 
     "outputs":1,"noerr":0,"x":381.79998779296875,"y":164.8000030517578,"z":"3f9da5d2.b3f0aa", 
     "wires":[["4f92b16a.cf981"]] 
    }, 
    { 
     "id":"3e20f8a4.06451", 
     "type":"websocket in", 
     "name":"dbInput", 
     "server":"7924a83a.03355", 
     "client":"", 
     "x":159.8000030517578,"y":164.8000030517578,"z":"3f9da5d2.b3f0aa", 
     "wires":[["b84efad2.9a2a58"]] 
    }, 
    { 
     "id":"68a4a35.5983f5c", 
     "type":"debug", 
     "name":"", 
     "active":true,"console":"false", 
     "complete":"true", 
     "x":970.7999877929688,"y":162.8000030517578,"z":"3f9da5d2.b3f0aa", 
     "wires":[] 
    }, 
    { 
     "id":"5a0aed1c.34279c", 
     "type":"sqldb in", 
     "service":"LabSensors-sqldb", 
     "query":"", 
     "params":"{msg.begin},{msg.end}", 
     "name":"db Request", 
     "x":787.7999877929688,"y":163.8000030517578,"z":"3f9da5d2.b3f0aa", 
     "wires":[["68a4a35.5983f5c"]] 
    }, 
    { 
     "id":"e08c4a85.e95e68", 
     "type":"debug", 
     "name":"", 
     "active":true,"console":"false", 
     "complete":"true", 
     "x":791.7999877929688,"y":233.8000030517578,"z":"3f9da5d2.b3f0aa", 
     "wires":[] 
    }, 
    { 
     "id":"4f92b16a.cf981", 
     "type":"function", 
     "name":"Construct Query", 
     "func":"msg.begin = msg.payload[0];\nmsg.end = msg.payload[1];\nmsg.payload = \"SELECT * FROM IOT WHERE TIME >= '?' AND TIME < '?'\";\nreturn msg;", 
     "outputs":1,"noerr":0,"x":583.7999877929688,"y":163.8000030517578,"z":"3f9da5d2.b3f0aa", 
     "wires":[["5a0aed1c.34279c", 
     "e08c4a85.e95e68"]] 
    } 
] 

Répondre

0

Dans la documentation du nœud rouge pour le noeud de requête SQLDB il dit.

"marqueurs Paramètre est un ensemble délimité par des virgules des chemins de JSON Ces remplacera tous les points d'interrogation que vous placez dans votre requête, dans l'ordre où ils apparaissent. "

Avez-vous essayé de supprimer les accolades, c'est-à-dire de définir le champ "params" du noeud sur "msg.begin, msg.end"?

+0

Lorsque je mets "msg.begin, msg.end" le noeud sqldb ne me donne plus d'erreur, mais la requête ne me donne aucun résultat. Je sais que cette requête devrait renvoyer des valeurs parce que quand je hardcode la requête cela fonctionne. Ai-je formaté le msg.payload correctement? 'msg.payload =" SELECT * FROM IOT OERE HEURE> = '?' AND TIME <'?' ";' – jdistler

+0

Désactivation de cela, modification de la charge utile en 'msg.payload =" SELECT * FROM IOT WHERE TIME> = "+"? "+" ET HEURE <"+"? ";' semble produire une requête valide, mais mon noeud de débogage est en train de sortir ce '{" payload ": []," _session ": {" type ":" websocket "," id ":" fcc17050.033e9 "}," _msgid ": "1918d7ee.e6e728", "begin": "2015-08-07 15:30:00", "end": "2015-08-07 15:30:00"} '- un résultat vide. – jdistler

+0

Le dernier format de msg.payload a fonctionné une fois que j'ai corrigé une erreur de logique que j'ai trouvée ailleurs dans mon flux. – jdistler

0

Vous devez simplement supprimer des guillemets simples c'est une phrase correcte:

msg.payload = "? SELECT * FROM TIME IOT OÙ> = ET TEMPS <";