【问题标题】:Azure function output binding destroys collection in Cosmos DBAzure 函数输出绑定会破坏 Cosmos DB 中的集合
【发布时间】:2017-12-05 00:30:52
【问题描述】:

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

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

我注意到了一些问题:

  1. 带有输出绑定的 JavaScript 中的 Azure 函数似乎不起作用。这是代码:
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# 中编写了等效代码并注意到集合已被破坏(显然是在保存文档时被绑定破坏)。
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 客户端进行查询也失败了。

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

【问题讨论】:

标签: azure azure-cosmosdb azure-functions


【解决方案1】:

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

【讨论】:

  • 非常感谢@jeffhollan。我刚刚尝试将 _id 字段添加到对象中,但仍然从 mongo 客户端收到错误消息。如果我想让 mongo 客户端保持可读性,也许我不能使用绑定。我正在进一步研究,并将发布我的发现的更新。
  • 你解决过这个问题吗?我怀疑您将不得不放弃绑定并使用本机 Mongo 客户端
  • 我能够解决这个问题。您必须使用 Mongo DB driver for JS 来执行此操作。您可以找到一篇文章 here 描述如何安装依赖项和工作示例代码。
猜你喜欢
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 2020-12-08
  • 1970-01-01
  • 2021-06-17
  • 2021-12-01
相关资源
最近更新 更多