代码之家  ›  专栏  ›  技术社区  ›  Evan Park

Azure函数CosmosDB触发器是否返回编码数据?

  •  0
  • Evan Park  · 技术社区  · 6 年前

    我编写了一个简短的azure函数,只需从CosmosDB change feed触发器接收数据。

    然而,它似乎返回某种形式的编码数据。

    例如

    {
        "_id" : ObjectId("5ad8db107dfa95101430ab94"),
        "id" : "task123",
        "type" : "genera123l",
        "information" : "some task"
    }
    

    如果上述文档是在my cosmos db中创建的,

    public static void Run(IReadOnlyList<Document> documents, TraceWriter log)
    {
        if (documents != null && documents.Count > 0)
        {
            log.Info("Documents modified " + documents.Count);
            log.Info("First document Id " + documents[0].Id);
        }
    }
    

    将打印上述代码

    2018-04-19T19:28:23.899 [Info] Documents modified 1
    2018-04-19T19:28:23.899 [Info] First document Id NWFkOGRiMTA3ZGZhOTUxMDE0MzBhYjk0
    

    而不是

    2018-04-19T19:28:23.899 [Info] Documents modified 1
    2018-04-19T19:28:23.899 [Info] First document Id task123
    

    这是预期的输出。 这里是否有我缺少的某种配置?

    似乎没有CosmosDB或Azure Function应用程序的文档 解决此问题:(

    谢谢

    2 回复  |  直到 6 年前
        1
  •  1
  •   Tom Sun    6 年前

    我假设您使用 Azure CosmosDB MongoDb 输入绑定的API。

    请尝试使用 Azure CosmosDB SQL API 。您可以参考以下详细步骤 guide 。然后您可以得到预期的答案。有关更多信息,请参阅 link

    不要 如果您正在使用,请使用Azure Cosmos DB输入或输出绑定 MongoDB API 在Cosmos DB帐户上。 数据可能损坏。

    enter image description here

        2
  •  0
  •   Matias Quaranta    6 年前

    您正在使用MongoDB API帐户。您看到的是BSON文档在JSON中的表示,这不是编码问题。

    这个 Change Feed feature is read and accessed using the SQL SDK ,这就是BSON>JSON转换。

    虽然从技术上讲,您可以使用函数的变更提要、使用变更提要SDK或以编程方式将SQL SDK与任何Cosmos DB API帐户一起使用,但如果您在Mongo帐户中使用二进制属性,它们将转换为JSON。