Yan*_*ony 8 javascript node.js azure-functions
我正在使用带有 javascript 的 Azure 函数,我想修改path我函数中的 out 绑定。例如,这是我的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"
}
]
Run Code Online (Sandbox Code Playgroud)
我想设置{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
};
}
Run Code Online (Sandbox Code Playgroud)
找不到任何方法,这可能吗?
绑定在函数执行之前解析。您可以用作{DateTime}绑定表达式。默认情况下它将是yyyy-MM-ddTHH-mm-ssZ. {DateTime:yyyy}您也可以使用(以及其他格式模式,根据需要)。
命令式绑定(这是您想要实现的)仅在 C# 和其他 .NET 语言中可用,文档说:
运行时绑定 在 C# 和其他 .NET 语言中,您可以使用命令式绑定模式,而不是 function.json 和属性中的声明式绑定。当需要在运行时而不是设计时计算绑定参数时,命令式绑定非常有用。要了解更多信息,请参阅C# 开发人员参考或C# 脚本开发人员参考。
MS 现在可能也已将其添加到 JS 中,因为我很确定我一年多前就读过该部分,但我找不到任何与之相关的内容。也许你可以自己挖掘一下。
如果您的请求内容是 JSON,则替代方法是在请求中包含路径,例如:
{
"mypath":"a-path",
"data":"yourdata"
}
Run Code Online (Sandbox Code Playgroud)
然后您就可以像这样进行声明性绑定:
{
"name": "outputBlob",
"path": "container/{mypath}-{rand-guid}",
"connection": "storagename_STORAGE",
"direction": "out",
"type": "blob"
}
Run Code Online (Sandbox Code Playgroud)
如果您需要 的名称/路径Blob,您可能必须将两个函数链接在一起,其中一个函数充当入口点和路径生成器,而另一个函数则处理Blob(当然还有绑定)。事情会是这样的:
HttpTrigger用and Queue(输出)声明第一个函数。{date}-{guid}.{"mypath":"2020-10-15-3f3ecf20-1177-4da9-8802-c7ad9ada9a33", "data":"some-data"}(当然,用您自己生成的值替换日期和 guid...)QueueTrigger使用和 -needs声明第二个函数Blob,仍然Blob像以前一样绑定路径,但没有{rand-guid},只是{mypath}。mypath用于 blob 输出(声明性),又可以从队列消息中获取可用信息。