在我的CosmosDB上,我有一个json文档:
--- Category example on Container Categories
{
"id": "expert_talks",
"name": "Expert Talks",
}
--- Timeline example on Container Timeline
"id": "30122021170000",
"type": "PDF",
"datePublished": "2021-12-29T16:00:00.944Z",
"title": "The Title2",
"subTitle": "The Subtitle2",
"category": "expert_talks",
"tags": [
"Alpha",
"Bravo",
"Charlie",
"Delta",
"Echo",
"Fox"
],
"file": "https://africau.edu/images/default/sample.pdf"
}因此,时间线条目指向类别容器上存在的键。
这是我的模式..。有两个模型和一个调用CosmosDb给我带来的结果,然后我应该提供一个时间线条目的列表。
// My models
public class TimelineItem
{
public string Id { get; set; }
public string Type { get; set; }
public string Title { get; set; }
public string SubTitle { get; set; }
public string File { get; set; }
public Category Category { get; set; }
public DateTime DatePublished { get; set; }
public List<People>? People { get; set; }
public List<string> Tags { get; set; }
}
public class Category
{
public string Id { get; set; }
public string Name { get; set; }
}
// The code that's make the call
public async Task<List<TimelineItem>> GetTimeline()
{
string sqlQueryText = $"SELECT * FROM c order by c.id";
QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);
FeedIterator<TimelineItem> queryResultSetIterator = this.timelineContainer.GetItemQueryIterator<TimelineItem>(queryDefinition);
List<TimelineItem> items = new List<TimelineItem>();
while (queryResultSetIterator.HasMoreResults)
{
FeedResponse<TimelineItem> currentResultSet = await queryResultSetIterator.ReadNextAsync();
foreach (TimelineItem item in currentResultSet)
{
items.Add(item);
}
}
return items;
}问题就在这一行:FeedResponse currentResultSet = await currentResultSet
因为从json数据库得到的结果是一个字符串,而不是一个对象。因此,我没有这个错误:错误地将值"expert_talks“转换为输入‘以色列制药公司模型。路径“.”,第1行,位置155。
这个错误对我来说是有意义的,但对于如何解决这个问题,我没有老生常谈。有没有什么方法可以对Cosmos进行SQL调用,并将结果以指定的模式形式给我,比如对此执行一些关系SQL查询?
如果没有:是否有机会将这些类别作为参数发送,如公共异步任务GetTimeline( allOfMyCategories),以及在某些情况下如何使用函数中的数据?
如何解决这个简单的问题?提前谢谢!
发布于 2021-12-16 22:09:55
存储此数据的方式与要将数据查询和反序列化为对象的方式不正确。如果您想将一个对象嵌入到另一个对象的内部,它需要以下面的格式存储,这样您就可以将它反序列化到这两个对象中,如上面所示。
{
"id": "30122021170000",
"type": "PDF",
"datePublished": "2021-12-29T16:00:00.944Z",
"title": "The Title2",
"subTitle": "The Subtitle2",
"category": {
"id": "expert_talks",
"name": "Expert Talks"
},
"tags": [
"Alpha",
"Bravo",
"Charlie",
"Delta",
"Echo",
"Fox"
],
"file": "https://africau.edu/images/default/sample.pdf"
}https://stackoverflow.com/questions/70384881
复制相似问题