我写了一个简短的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的文档 解决这个问题:(
由于
答案 0 :(得分:1)
我假设您使用 Azure CosmosDB MongoDb API进行输入绑定。
请尝试使用 Azure CosmosDB SQL API 。您可以参考此guide的详细步骤。然后你就可以得到预期的答案。有关详细信息,请参阅此link。
如果您在Cosmos DB帐户上使用 MongoDB API ,请使用Azure Cosmos数据库输入或输出绑定。 数据损坏是可能的。
答案 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>