我正在尝试使用Azure函数来调用具有不同时间和不同param(url)的相同函数。 我没有找到任何显示如何传递一些数据的好例子。我想传递链接到功能。 我的代码是:
var rp = require('request-promise');
var request = require('request');
module.exports = function (context //need to get the url) {
和功能
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 0 */1 * * *"
}
],
"disabled": false
}
答案 0 :(得分:2)
如果您的设置是相对静态的(但您仍然不想对它们进行硬编码),您可以使用应用程序设置来存储它们,然后阅读,例如。
let url = process.env['MyUrl'];
如果应根据请求确定URL,您可以使用HTTP触发器并从查询参数中读取URL:
let url = req.query.myurl;
我不确定您使用参数化定时器触发功能究竟想要实现的目标。
答案 1 :(得分:0)
另一种可能性是,如果您的参数存储在某处,例如Azure Document DB(Cosmos)。
您仍然可以使用TimerTrigger
来调用该函数,并包含一个DocumentDB输入绑定,允许您查询执行该函数所需的特定参数值。
这是一个由Timer触发的C#示例,带有DocumentDB
输入绑定。注意:我使用最新的VS2017预览工具进行Azure功能。
[FunctionName("TimerTriggerCSharp")]
public static void Run(
[TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, TraceWriter log,
[DocumentDB("test-db-dev", "TestingCollection", SqlQuery = "select * from c where c.doc = \"Test\"")] IEnumerable<dynamic> incomingDocuments)
{..}
使用以下绑定json:
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 */5 * * * *"
},
{
"type": "documentDB",
"name": "incomingDocuments",
"databaseName": "test-db-dev",
"collectionName": "TestingCollection",
"sqlQuery": "select * from c where c.docType = \"Test\"",
"connection": "my-testing_DOCUMENTDB",
"direction": "in"
}
],
"disabled": false
}