node.js - 如何将 IBM Cloud Functions 上的操作与数据库连接起来?
问题描述
我在 watson 助手中有一个对话,我希望能够从 IBM 云功能调用一个操作来对我的数据库(Azure)进行一些查询。我不熟悉云功能,所以这可能是一个愚蠢的问题,我不明白如何与数据库建立连接,我尝试编写一些 nodejs 代码但我当然错了,因为它返回“内部错误” ”。我还尝试用 python 而不是 nodejs 编写一些代码。这又是一个愚蠢的问题,所以请原谅我。谢谢!
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'my_host',
user: 'my_user',
password: 'my_psw',
database: 'my_db'
});
connection.connect();
rows = connection.query('my_query')
if (!err) {
console.log(typeof(rows));
console.log('The solution is: ', rows);
} else {
console.log(typeof(rows));
console.log('Error while performing Query.');
}
connection.end();
{
"error": "Internal error."
}
import pyodbc as pyodbc
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=my_server;DATABASE=my_db;UID=my_user;PWD=my_pwd')
cursor = conn.cursor()
sql = "my_sql"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
csr = conn.cursor()
csr.close()
del csr
conn.close()
{
"error": "The action did not return a dictionary."
}
解决方案
错误来自您返回结果的方式。您需要将结果打包成有效的 JSON 结构。
return {"sqlresult": myresult}
我在上面的评论中引用了两个教程。聊天机器人教程使用Node.js 实现 Cloud Functions。这些函数是从 Watson Assistant 调用的。看看这个从 Db2 数据库中获取记录的操作。它打开一个数据库连接,获取记录并将它们打包到 JSON 结构中。然后将该 JSON 对象返回给 Watson Assistant。
本教程还展示了如何将数据库凭据传递到 Cloud Function 中。
推荐阅读
- python - 如何在不忽略前缀零的情况下打印完整位?
- kubernetes - 我们是否有命令在 kubernetes 中执行多个参数
- javascript - 401 API Authentication Failed using POST 方法
- node.js - 打字稿:从基类设置器访问子类的属性
- python - 在不同的 Python 脚本中使用项目配置变量
- java - 自定义排序方式为 A 在 a 之前 B 在 b 之前
- shopify - 从店面的 Shopify 获取博客 JSON 并可能按标签过滤
- pandas - 如何在 Pandas 中的字符串值内添加“-”
- android - 如何同步协程?
- python-pptx - 如何从 pptx-python 中的视频中删除海报图像