Azure Function CosmosDB Trigger返回编码数据?

时间:2018-04-19 19:32:21

标签: azure azure-functions azure-cosmosdb

我写了一个简短的azure函数来简单地从CosmosDB更改提要触发器中获取数据。

然而,看起来它会返回某种形式的编码数据。

例如

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

如果在我的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 App的文档 解决这个问题:(

由于

2 个答案:

答案 0 :(得分:1)

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

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

  

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

enter image description here

答案 1 :(得分:0)

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

Change Feed feature is read and accessed using the SQL SDK,这就是BSON&gt;的原因。 JSON转换。

虽然您可以在技术上使用Change Feed from Functions,使用Change Feed SDK或以编程方式将SQL SDK与任何Cosmos DB API帐户一起使用,但如果您在Mongo帐户中使用二进制属性,它们将转换为JSON。 / p>