Azure功能输出绑定会破坏Cosmos DB中的集合

时间:2017-12-05 00:30:52

标签: azure azure-cosmosdb azure-functions

我正在尝试使用输出绑定将文档保存到CosmosDB中的集合。

数据库是使用MongoDB API访问创建的。

我注意到了一些问题:

  1. 带有输出绑定的JavaScript中的Azure功能似乎不起作用。这是代码:
  2. module.exports = function (context, req) {
        if (req.body) {
            context.bindings.outputObject = JSON.stringify({
                name: "Mike P"
            }); // tried outputObjectOut as well, no difference
    
            context.res = {
                // status: 200, /* Defaults to 200 */
                body: "Hello " + (req.query.name || req.body.name)
            };
        }
        else {
            context.res = {
                status: 400,
                body: "Please pass a name on the query string or in the request body"
            };
        }
        context.done();
    };
    

    JavaScript代码的 function.json 与下面给出的相同。

    1. 我在C#中编写了相同的代码,并注意到该集合已被销毁(显然是在保存文档时绑定)。
    2. public static HttpResponseMessage Run(HttpRequestMessage req,
          out object outputObject, TraceWriter log)
      {
          outputObject = new {
              name = "Mike P"
          };
      
          log.Info("test");
      
          return req.CreateResponse(HttpStatusCode.OK);
      }
      

      这是function.json

      {
        "type": "documentDB",
        "name": "outputObject",
        "databaseName": "newexp",
        "collectionName": "Test",
        "createIfNotExists": true,
        "connection": "newexp_DOCUMENTDB",
        "direction": "out"
      }
      

      Azure控制台中无法再查询该集合。通过像3T这样的MongoDB客户端查询也失败了。

      我希望此代码能够正常工作,并且文档会显示在数据库的集合中。但相反,我看到该集合变得无法使用。这是一个错误还是我做错了什么?任何帮助或指示表示赞赏。

1 个答案:

答案 0 :(得分:0)

Azure函数CosmosDB绑定是针对CosmosDB的DocumentDB API(或SQL API)编写的 - 因此不能与Mongo API一起使用。我相信如果在对象中添加必需的_id属性,它可能会起作用。没有_id字段,Mongo API调用将失败