如何在TypeScript中修改functions.json输出绑定配置的键值参数
问题解答
结论
你提到的context.bindings.databaseName = "some value"写法不可行,无法通过这种方式在运行时修改function.json中定义的绑定配置项。
原因说明
context.bindings下的可操作属性,和function.json中每个绑定的name字段是一一对应的。你当前配置里Cosmos DB输出绑定的name为funcMsg,所以只有context.bindings.funcMsg是用来传递待写入Cosmos DB数据的合法入口。databaseName、collectionName、connectionStringSetting这类属于绑定的静态配置项,不属于context.bindings的可操作属性,你给不存在的context.bindings.databaseName赋值不会对实际绑定逻辑产生任何影响。- 如果你使用TypeScript的类型校验,直接给
context.bindings下不存在的属性赋值还会触发类型错误,即便你通过类型断言绕开校验,逻辑上依然无效。
动态指定数据库/集合的替代方案
如果你有运行时动态指定Cosmos DB数据库名、集合名的需求,可以采用以下两种方案:
- 绑定表达式方案:在
function.json中通过绑定表达式引用应用配置或触发器参数,例如将databaseName的值配置为%配置项名%会自动读取对应应用配置的值,配置为{触发器参数名}会自动读取触发器传入的对应参数值,适合参数可从触发器上下文或应用配置获取的场景。 - 直接使用Cosmos DB SDK:不使用预定义的输出绑定,在函数代码中直接引入Cosmos DB官方SDK,自行初始化客户端,在运行时动态指定要操作的数据库、集合完成数据写入,灵活度最高,适合参数完全动态的场景。
内容的提问来源于stack exchange,提问作者mello
相关产品推荐
相关产品推荐

