Как получить подмножество вложений - PullRequest
1 голос
/ 17 февраля 2020

У меня есть CouchDB с документами, которые выглядят так:

{
  "_id": "000040cc-e3b4-47cc-b051-a5508efb8996",
  "_rev": "1-882d7f88cc2e1e767b55d0c82fb638d2",
  "state": "uploaded",
  "state_since": "2020-02-17T11:20:55.1450252Z"
  // more metadata ...

  "_attachments": {
    "large.jpg": {
      "content_type": "image/jpeg",
      "revpos": 1,
      "digest": "md5-NK7ejYjrErhMAs7tZ4+R8w==",
      "length": 87846,
      "stub": true
    },
     "medium.jpg": {
      ...
    },
    "small.jpg": {
      ...
    }
  }
}

Предположим, я хочу запросить набор изображений, подобный этому:

{
   "selector": {
      "state": "uploaded"
   },
   "sort": ["state_since"],
   "limit": 100
}

Если я хочу чтобы отобразить миниатюры этих 100 изображений, мне нужно было бы перебрать список результатов и загрузить соответствующие вложения. Всего было бы 101 запрос.

Я также мог бы сделать это одним запросом, указав, что я хочу получить документы с вложениями. Но это вернет все (потенциально очень большие) вложения.

Я знаю, что могу установить свойство fields в своем запросе, чтобы возвращать только те поля, которые мне нужны. Но можно ли применить это и к вложениям? И если да, то как?

1 Ответ

2 голосов
/ 20 февраля 2020

Нет, нет способа сделать то, что вы просите. Единственный способ получить подмножество вложений - это выбрать их по одному или использовать атрибут atts_since при получении одного документа, который предназначен для использования в репликации.

Возможно, подумайте о редизайне ваших документов. Возможно, вы можете хранить свои эскизы в отдельном документе, который содержит только эскизы.

...