我的应用程序是一个注册应用程序,用户将在其中填写一个包含100个字段的大型注册表格并提交。 数据存储的方式是:
当用户填写注册表格并提交时,会使用1个SubmittedId创建一个提交文档,并且其每个字段都存储为一个单独的submittValueDocument,其关键字具有该submitId,即100个submissionValue文档。
{
"_id": "0027ec9c-83d1-45a7-bd2c-ee41f4i5d692/citizenship[0].country_of_birth[0].label/1551683896469",
"_rev": "1-4fdf63cb121e475d96c160b80a0598de",
"$doctype": "submissionValue",
"value": "India"
}
在此ID(0027ec9c-83d1-45a7-bd2c-ee41f4i5d692)的第一部分是submittingId,后跟密钥名。
我有一个导出到CSV功能,我遇到超时问题。我的申请中有大约10000个注册。当我单击“导出”按钮时,我传递了所有10000个SubmittingId,然后为每个submissionId调用了一个View,以获取所有submissionValues。下面是该视图的代码:
function(doc) {
if(doc.$doctype == "submissionValue" && doc._id.indexOf("/") > 0) {
var submissionId = doc._id.split("/")[0]
emit(submissionId , doc);
}
}
在上面的视图中,我将返回每个提交的所有submissionValue文档,然后在.NET端,我将基于submissionId将记录分组并写入Excel。
我收到超时异常。我不知道问题出在文档中的数据存储方式还是我试图获取数据的视图中。