如何将两个参数传递给来自 IBM Bluemix 的 Node-Red 的 dashDB 查询元素

Posted

技术标签:

【中文标题】如何将两个参数传递给来自 IBM Bluemix 的 Node-Red 的 dashDB 查询元素【英文标题】:How to pass two parameters to dashDB query element of Node-Red from IBM Bluemix 【发布时间】:2015-12-10 11:32:47 【问题描述】:

我正在尝试将两个参数传递给来自 Bluemix 上 Node-Red 流编辑器中的 dashDB 对象的 sql 查询。我的参数存储在 msg.fromDate 和 msg.toDate 中,我想将它们输入到 dashDB 节点的“参数标记”中。当我只使用一个参数时,我只需在 Parameter Markers 中输入 "msg.fromDate" 就可以了。在日志中我看到了这个:

2015-12-10T12:22:12.856+0100 [App/0] out 输入节点:pathToArray: msg,toDate 2015-12-10T12:22:12.856+0100 [App/0] out 输入节点:parameterValues:2015-12-01

现在,当我尝试使用两个输入参数时,我在“参数标记”中键入 "msg.toDate, msg.fromDate",我在日志中收到此错误:

2015-12-10T12:26:01.271+0100 [App/0] 于 12 月 10 日 11:26:01 出 - [错误] [dashDB in:popular words] TypeError: Cannot read property 'fromDate' 未定义的

2015-12-10T12:26:01.270+0100 [App/0] out 输入节点:pathToArray: msg,toDate, msg,fromDate

如何传递两个参数?

【问题讨论】:

【参考方案1】:

我找到了这个问题的原因。看起来当我像这样输入“参数标记”时:

msg.toDate, msg.fromDate

它不起作用。就像这样它可以工作:

msg.toDate,msg.fromDate

换句话说,参数之间的空格会破坏它!

【讨论】:

【参考方案2】:

参数之间不能有引号,不确定添加引号是为了格式化任务还是实际将其添加到参数中。

我用function node 编写了一个简单的节点红色流来构建查询和dashDB node 本身。

在我的function node 我有以下查询:

msg.fromDate = '2011-04-12 00:00:00';
msg.toDate= '2015-03-12 00:00:00';
msg.payload = "SELECT COL2 FROM DASH104951.TESTDATE WHERE START >= ? AND END <= ?";
return msg;

dashDB node 我只有参数标记文本字段:

msg.fromDate,msg.toDate

一切正常。

如果您想将它导入到您自己的 node-red 应用程序,这是我的 node-red 流程:

["id":"211a834b.dee57c","type":"inject","z":"197f318.fe680ce","name":"","topic":"","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":117,"y":115,"wires":[["7a23c994.85dc38"]],"id":"7a23c994.85dc38","type":"function","z":"197f318.fe680ce","name":"Build Query","func":"msg.fromDate = '2011-04-12 00:00:00';\nmsg.toDate= '2015-03-12 00:00:00';\nmsg.payload = \"SELECT COL2 FROM DASH104951.TESTDATE WHERE START >= ? AND END <= ?\";\nreturn msg;","outputs":1,"noerr":0,"x":325,"y":123,"wires":[["559c92e4.aa636c"]],"id":"24974090.db68c","type":"debug","z":"197f318.fe680ce","name":"dashDB query result","active":true,"console":"false","complete":"true","x":773,"y":125,"wires":[],"id":"559c92e4.aa636c","type":"dashDB in","z":"197f318.fe680ce","service":"dashDB-0a","query":"","params":"msg.fromDate,msg.toDate","name":"","x":548,"y":131,"wires":[["24974090.db68c"]]]

【讨论】:

我没有在参数之间使用引号 - 它仅用于更好地格式化我的问题。 好的,感谢您的澄清,希望我上面的回答有所帮助。如果不告诉我。

以上是关于如何将两个参数传递给来自 IBM Bluemix 的 Node-Red 的 dashDB 查询元素的主要内容,如果未能解决你的问题,请参考以下文章

如何将无限参数和一个或两个参数传递给 JavaScript 函数? [复制]

如何将两个参数传递给百里香模板?

如何将两个参数传递给下一个 ViewController?

如何将参数传递给graphql查询?

如何将两个参数传递给 Javascript/NodeJS 中的 API“获取”请求

Laravel 5.8:如何将两个参数传递给 Event 和 Listener