Мое приложение - это приложение для регистрации, где пользователь заполняет большую регистрационную форму на 100 полей и отправляет ее.Способ хранения данных:
- Документ отправки, в котором хранятся идентификатор отправки, имя, адрес электронной почты и дата / время отправки.
- Документы значения отправки, которые представляют собой не что иное, как данные каждого поляполе в регистрационной форме.
Когда пользователь заполняет регистрационную форму и отправляет ее, создается 1 документ для отправки с submissionId, и каждое из его полей сохраняется как отдельный документ submissionValue со своимключ, имеющий submissionId, то есть 100 документов submissionValue.Пример документа submissionValue:
{
"_id": "0027ec9c-83d1-45a7-bd2c-ee41f4i5d692/citizenship[0].country_of_birth[0].label/1551683896469",
"_rev": "1-4fdf63cb121e475d96c160b80a0598de",
"$doctype": "submissionValue",
"value": "India"
}
Здесь первая часть идентификатора (0027ec9c-83d1-45a7-bd2c-ee41f4i5d692) - это идентификатор submissionId, за которым следует имя ключа.
У меня естьфункция экспорта в CSV, где я сталкиваюсь с проблемой тайм-аута.У меня около 10000 регистраций в моей заявке.Когда я нажимаю кнопку «Экспорт», я передаю все 10000 идентификаторов submissionId, а затем для каждого идентификатора submissionId я вызываю представление, чтобы получить все значения submissionValues.Ниже приведен код для представления:
function(doc) {
if(doc.$doctype == "submissionValue" && doc._id.indexOf("/") > 0) {
var submissionId = doc._id.split("/")[0]
emit(submissionId , doc);
}
}
В представлении выше я возвращаю все документы submissionValue для каждой отправки, затем на стороне .NET я группирую записи на основе submissionId и пишув Excel.
Я получаю исключение тайм-аута.Я не знаю, связана ли проблема с тем, как данные хранятся в документах, или с представлением, которое я пытаюсь получить.