Javascript Azure Functions 中未拾取或存在的输出绑定

Posted

技术标签:

【中文标题】Javascript Azure Functions 中未拾取或存在的输出绑定【英文标题】:Output bindings not picked up or present in Javascript Azure Functions 【发布时间】:2018-04-20 12:58:53 【问题描述】:

让我的简单 Azure 函数将 JSON 有效负载转储到 CosmosDB 时遇到了一些困难。这是所需的设置:

[HTTP TRIGGER] -> [JS FUNCTION] -> [INSERT JSON TO COSMOS DB]

我在 web 控制台中通过 Integrate 添加了一个 cosmosDB 输出绑定

我知道这部分有效,因为它会在运行时自动创建集合。

然而,这就是我成功的终点。

我已在此处包含我的代码。也许我错过了一些明显的东西:

function.json


  "bindings": [
    
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req"
    ,
    
      "type": "http",
      "direction": "out",
      "name": "res"
    ,
    
      "type": "documentDB",
      "name": "outputDocument",
      "databaseName": "outDatabase",
      "collectionName": "MyCollection",
      "createIfNotExists": true,
      "connection": "mydocdb_DOCUMENTDB",
      "direction": "out"
    
  ],
  "disabled": false

index.js

module.exports = function (context, req) 
    context.log('javascript HTTP trigger function processed a request.');

    context.bindings.outputDocument = test: "hello world"
    context.done();
;

context.log(context) 的 sn-p 输出 我还查看了上下文变量,似乎没有出站绑定。我本来希望在这里看到 outputDocument:

bindings: 
    req: 
       originalUrl: 'https://log-ugly-url-here',
        method: 'POST',
        query: [Object],
        headers: [Object],
        body: [Object],
        params: ,
        rawBody: '\n    "name": "Azure"\n'  ,
  bind: [Function],

在门户中执行此函数得到 200 OK,但我的 cosmosdb 集合中没有显示任何值。

任何地方都没有显示错误。

谁能看到我可能错过了什么?

更新 根据this document,建议我尝试在有效负载周围使用 JSON.stringify():

context.bindings.outputDocument = JSON.stringify(test: "hello world");

但是,这并没有解决问题。我注意到绑定配置部分下的文档不推荐这种策略。

更新 - 2017 年 11 月 8 日(上午 10:12)

我在 azure 中使用数据资源管理器刀片来查看我的集合中是否有结果。我决定使用 Robo 3T Mongo 客户端。现在,当我查询集合时,出现以下错误:

Error: error: 
    "_t" : "OKMongoResponse",
    "ok" : 0,
    "code" : 1,
    "errmsg" : "Unknown server error occurred when processing this request.",
    "$err" : "Unknown server error occurred when processing this request."

我尝试查看此 cosmosdb 的日志,但未显示任何错误。

【问题讨论】:

根据本文档中的示例,来自 javascript 的 DocDB 绑定似乎需要一个字符串(在 JSON.stringify() 中)。让我知道这是否有效。 doc here 感谢您的意见。不幸的是,这也不起作用。我正在用不同的策略更新原始问题,直到我们解决这个问题。 您的初始代码对我来说工作得很好,我插入了“hello world”文档。 context.log(context) 是一样的,所以没问题。以防万一:文档获得了自动生成的 ID,也许您只是没有看到它? @Mikhail 感谢您试用。我用我的 mongo 客户端(Robo 3T)的输出再次更新了这个问题。 Azure Function with Cosmos MongoDB integration not saving的可能重复 【参考方案1】:

我也遇到过这个。一直在敲我的头,直到我看到这个:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-integrate-store-unstructured-data-cosmosdb

“目前,Azure Cosmos DB 触发器、输入绑定和输出绑定仅适用于 SQL API 和 Graph API 帐户”

Azure 中似乎存在意外损坏数据库的错误。

【讨论】:

以上是关于Javascript Azure Functions 中未拾取或存在的输出绑定的主要内容,如果未能解决你的问题,请参考以下文章

Azure 应用服务Python fastapi Function在Azure

如何使用 Azure Function 在 Azure 文件共享中解压缩文件?

如何使用 Azure 数据工厂使用私有终结点访问 Azure Function?

Azure Function Python 写入 Azure DataLake Gen2

使用托管标识从 Azure Logic 应用向 Azure Function 进行身份验证

Azure 应用服务Azure Function HTTP 触发后, 230秒就超时。而其他方式触发的Function, 执行5分钟后也超时,如何调整超时时间?