IBM Cloud Functions:在 Nodejs 中使用异步调用
Posted
技术标签:
【中文标题】IBM Cloud Functions:在 Nodejs 中使用异步调用【英文标题】:IBM Cloud Functions: Use async calls in Nodejs 【发布时间】:2021-10-18 00:52:12 【问题描述】:我在 Cloud.ibm.com 上以访问 Cloudant 数据库的操作中运行此代码:
async function main(params)
const cloudant = Cloudant(
url: params.COUCH_URL,
plugins: iamauth: iamApiKey: params.IAM_API_KEY
);
try
let dbList = await cloudant.db.list();
let db = await cloudant.use('dealerships')
let result = await db.get("ddb5ed4f65d21bf4a4da409b8bc4b70a")
let query =
"selector":
"_id": "ddb5ed4f65d21bf4a4da409b8bc4b70a"
,
"fields": [
"_id",
"_rev"
],
"sort": [
"_id": "asc"
]
let result2 = await db.find(query, function(err, data)
return data;
);
let indexes_result = await db.index(function(err, result)
if (err)
throw err;
else
return result
let indexes_ = ;
return indexes_
);
return
"dblist": dbList,
"result": result,
"result2": result2,
catch (error)
return error: error.description ;
我的结果如下:
Results:
"dblist": [
"alice",
"celina",
"dealerships",
"gaetan",
"guestbook",
"reviews"
],
"result":
"_id": "ddb5ed4f65d21bf4a4da409b8bc4b70a",
"_rev": "1-34e7ebd07643af43db578a46ee1d6365",
"address": "3 Nova Court",
"city": "El Paso",
"full_name": "Holdlamis Car Dealership",
"id": 1,
"lat": 31.6948,
"long": -106.3,
"short_name": "Holdlamis",
"st": "TX",
"state": "Texas",
"zip": "88563"
Logs:
[]
所以结果对象中没有我的 result2,我不知道发生了什么。我希望我可以访问一些日志和一些错误以了解问题所在,但我无权访问任何内容。
谁能给我一个访问日志和错误的方法?
【问题讨论】:
“在行动中”是什么意思?您是指 IBM Cloud Functions 吗? 是的。在 IBM Cloud Functions 中有操作和序列。我指的是一个动作 【参考方案1】:我发现我尝试使用的功能是这样的:
let result2 = await db.find(query, function(err, data)
return data;
);
let indexes_result = await db.index(function(err, result)
if (err)
throw err;
else
return result
必须在没有回调的情况下使用:即像这样:
let result2 = await db.find(query);
let indexes_result = await db.index();
我不知道为什么他们在文档中显示这些回调:https://github.com/cloudant/nodejs-cloudant https://www.npmjs.com/package/@cloudant/cloudant
如果有人知道他们为什么使用这些配方,我会很高兴知道!
【讨论】:
该库支持承诺和回调,Getting Started 显示了使用异步/等待风格、承诺链风格和回调风格的示例。并非所有示例都以每种可能的样式重复。【参考方案2】:您的 IBM Cloud Functions 操作可以使用异步代码。对于 Node.js,请查看 Functions documentation 以了解如何修复它。您需要使用 Promise。
您可以在dashboard 中查看您的操作的激活日志,或使用 CLI / API 或通过 SDK 检索它们。
顺便说一句:在您自己的回答中,您指的是 Cloudant 文档。它独立于 IBM Cloud Functions / OpenWhisk。
【讨论】:
以上是关于IBM Cloud Functions:在 Nodejs 中使用异步调用的主要内容,如果未能解决你的问题,请参考以下文章
IBM Cloud Functions 和 Node.js:如何获取日本时间?
IBM Cloud Functions Service 在尝试创建与 Cloudant 操作的新绑定时无法检索数据库列表
Cloud Functions 返回 403 错误也具有 Cloud Functions Invoker 权限
Cloud PubSub 重复消息触发的 Cloud Functions
在 Cloud Functions 中使用 Cloud Firestore 数据
如何使用 Google Python Client for Cloud Functions 获取 Google Cloud Functions 列表?