我想从HTTP帖子中获取原始JSON主体,并将其直接写入CosmosDB。
假设数据如下所示:
{
"id": "123456",
"storeName": "City Bar and Grille",
"invoiceTotal": 65
}
但是,documentsOut.AddAsync命令使用如下格式:
wait documentsOut.AddAsync(new
{
// create a random ID
id = System.Guid.NewGuid().ToString(),
body = sourceJson
});
最后我得到了一个文档,看起来像这样:
{
"id": "0e99d3ab-1956-4c0a-8ec1-99de5c987555",
"body": {
"id": "123456",
"storeName": "City Bar and Grille",
"invoiceTotal": 65
}
}
我真正想要的是这样的结局:
{
"id": "123456",
"storeName": "City Bar and Grille",
"invoiceTotal": 65
}
我想完全删除id = System.Guid.NewGuid().ToString()(这应该不难)。
如何传递原始JSON而不需要将其添加到某个父节点(例如body)?
2条答案
按热度按时间dwthyt8l1#
使用一个与你在问题中分享的类似的例子。我们可以创建一个模型类,它的属性要存储在数据库中。
然后可以创建模型的对象并将该对象传递给
AddAsync()
方法。如下图所示。当我们触发post API时,得到的响应如下所示。
最后,我们可以看到相同的记录存储在CosmosDB中。
mwngjboj2#
只是为了正式我的评论作为一个答案:具体来说,您要创建Cosmos DB文档的
body
属性:同时,您忽略了传入的ID。由于您希望保留该ID,您可以复制该ID(只要它在分区中保持唯一),而不是生成新的GUID,并且还可以从
sourceJson
获取单独的属性,以避免嵌套的body
元素: