javascript - 在 Azure Functions 中使用变量出绑定(bind)

标签 javascript node.js azure-functions

我正在使用带有 javascript 的 Azure 函数,我想修改 path 的输出绑定(bind)在我的职能中。例如,这是我的 function.json :

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    },
    {
      "name": "outputBlob",
      "path": "container/{variableCreatedInFunction}-{rand-guid}",
      "connection": "storagename_STORAGE",
      "direction": "out",
      "type": "blob"
    }
  ]
我想设置{variableCreatedInFunction}index.js , 例如:
module.exports = async function (context, req) {
    const data = req.body
    const date = new Date().toISOString().slice(0, 10)
    const variableCreatedInFunction = `dir/path/${date}`
    if (data) {
        var responseMessage = `Good`
        var statusCode = 200
        context.bindings.outputBlob = data
    } else {
        var responseMessage = `Bad`
        var statusCode = 500
    }
    context.res = {
        status: statusCode,
        body: responseMessage
    };
}
 
没找到办法,可以吗?

最佳答案

绑定(bind)在函数执行之前被解析。您可以使用 {DateTime}作为绑定(bind)表达式。默认为 yyyy-MM-ddTHH-mm-ssZ .您可以使用 {DateTime:yyyy}以及(和其他格式模式,根据需要)。
命令式绑定(bind)(这是您想要实现的)仅在 C# 和其他 .NET 语言中可用,the docs says :

Binding at runtime In C# and other .NET languages, you can use an imperative binding pattern, as opposed to the declarative bindings in function.json and attributes. Imperative binding is useful when binding parameters need to be computed at runtime rather than design time. To learn more, see the C# developer reference or the C# script developer reference.


到目前为止,MS 可能也已将其添加到 JS 中,因为我很确定我在一年前阅读了该确切部分,但我找不到与它相关的任何内容。也许你可以自己挖掘一下。
如果您的请求内容是 JSON,另一种方法是在请求中包含路径,例如:
{
  "mypath":"a-path",
  "data":"yourdata"
}
然后,您就可以像这样进行声明性绑定(bind):
{
  "name": "outputBlob",
  "path": "container/{mypath}-{rand-guid}",
  "connection": "storagename_STORAGE",
  "direction": "out",
  "type": "blob"
}
如果您需要 Blob 的名称/路径,您可能必须将两个函数链接在一起,其中一个充当入口点和路径生成器,而另一个处理 Blob (当然还有绑定(bind))。
它会是这样的:
  • HttpTrigger 声明第一个函数和 Queue (输出)。
  • 让第一个函数创建包含 {date}-{guid} 的“随机”路径.
  • 在队列输出中插入一条消息,内容为 {"mypath":"2020-10-15-3f3ecf20-1177-4da9-8802-c7ad9ada9a33", "data":"some-data"} (当然,用您自己生成的值替换日期和 guid...)
  • QueueTrigger 声明第二个函数和你的Blob -需要,仍然绑定(bind)Blob路径和以前一样,但没有 {rand-guid} , 只是 {mypath} .
  • mypath现在用于 blob 输出(声明性),并且您可以从队列消息中获得信息。
  • 关于javascript - 在 Azure Functions 中使用变量出绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64366878/

    相关文章:

    c# - 在Azure函数中运行.exe可执行文件

    .net - 使用 .NET 5 和 Docker 创建 Azure 函数

    javascript - 带有提交按钮的表单内的onClick函数导致错误

    javascript - 像JS中的数组一样分解对象?

    javascript - javascript上的功能无法删除

    javascript - 使用jQuery通过PHP显示动态工具提示

    javascript - 我可以将 Nodejs 模块下载为 javascript 文件吗?

    javascript - EJS (node.js) 中的动态模板

    node.js - Angular 4 无法加载资源:net::ERR_CONNECTION_REFUSED

    javascript - SignalR-连接。启动失败