azure - 从 Node.js 应用程序执行 cosmos 存储过程给出未定义的响应
问题描述
我已经在具有分区的 cosmos db 容器中有一个简单的存储过程。
function helloWorld() {
var context = getContext();
var response = context.getResponse();
response.setBody("Hello World");
}
我从 Azure 函数调用它。
const { response } = await container.scripts.storedProcedure("helloWorld").execute("1001831197");
console.log(response)
即使我的分区键是正确的,响应也会给出未定义的。
解决方案
execute 是异步函数,如果你想得到这个函数的响应,你需要使用 Promise。您可以参考这个问题的答案:如何“等待”回调返回?
代码可以参考这个答案:How to execute the cosmos db stored procedure in nodejs?
我为测试创建了一个 http 触发器,它可以正常工作:
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
context.log('HTTP trigger function processed a request.');
const name = (req.query.name || (req.body && req.body.name));
const response = await executeSprocInternal("getData", "success");
console.log(response);
const responseMessage = name
? "Hello, " + name + ". This HTTP triggered function executed successfully."
: "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response";
context.res = {
// status: 200, /* Defaults to 200 */
body: responseMessage
};
console.log("over")
};
推荐阅读
- python - 我不知道 tkinter 的 after 方法是如何工作的
- css - 不透明度:0 + 指针事件:无 vs 显示:无
- cordova - 使用 Cordova In app Browser 从视频播放器下载文件
- reactjs - 标签
在此浏览器中无法识别。如果您打算渲染一个 React 组件,请以大写字母开头 - java - 如何覆盖这段代码的 100% 分支?
- python - 我们可以使用 VODE 使用 scipy.integrate.ode 修改集成步骤之间的解向量吗?
- python - 使用python的Qgis插件构建器
- linux - linux不能用分号设置环境变量
- python - Python - 如果列名包含特定字符串,则更改该列中的值,否则值保持不变
- excel - 进一步划分已经很复杂的计算