Azure函数CosmosDB触发器返回编码数据?
我编写了一个简短的azure函数,只需从CosmosDB更改提要触发器接收数据 但是,它似乎返回某种形式的编码数据 比如说Azure函数CosmosDB触发器返回编码数据?,azure,azure-functions,azure-cosmosdb,Azure,Azure Functions,Azure Cosmosdb,我编写了一个简短的azure函数,只需从CosmosDB更改提要触发器接收数据 但是,它似乎返回某种形式的编码数据 比如说 { "_id" : ObjectId("5ad8db107dfa95101430ab94"), "id" : "task123", "type" : "genera123l", "information" : "some task" } 如果上述文档是在my cosmos db中创建的 public static void Run(IRea
{
"_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 task123
这是预期的输出。
这里有没有我遗漏的配置
看起来CosmosDB或Azure Function应用程序的文档都没有
解决这一问题:(
谢谢我假设您使用Azure CosmosDB MongoDbAPI进行输入绑定 请尝试使用Azure CosmosDB SQL API。您可以参考此详细步骤。然后您可以得到预期的答案。有关更多信息,请参考此 如果在Cosmos DB帐户上使用MongoDB API,请不要使用Azure Cosmos DB输入或输出绑定。数据可能损坏。
您使用的是MongoDB API帐户。您看到的是BSON文档在JSON中的表示,而不是编码问题 这就是BSON>JSON转换的原因
虽然您可以从技术上使用函数的Change Feed、使用Change Feed SDK或通过编程将SQL SDK与任何Cosmos DB API帐户一起使用,但如果您在Mongo帐户中使用二进制属性,它们将转换为JSON。显示Id值来自文档的“\u Id”,而不是“Id”参数。在base64为_id创建了正确的值。看起来它被读取为ObjectId,
2018-04-19T19:28:23.899 [Info] Documents modified 1
2018-04-19T19:28:23.899 [Info] First document Id task123