Как запросить «массив объектов» (несколько фильтров) в Google Datastore - PullRequest
0 голосов
/ 27 мая 2018

Я думаю, что что-то упустил, но я не могу понять это.Я использую Google Datastore (через nodeJS) и хотел бы написать простой запрос.

Давайте рассмотрим БД с этими двумя упрощенными сущностями, где collaborator означает "someone имеет доступдо этой сущности до some date ":

ENTITY #1
{ ID: 'entity1',
  FEATURE_A: false,
  COLLABORATORS: 
   [ 
    { UNTIL: '2018-06-04T19:00:00.369Z', EMAIL: 'A@A.com'},
    { UNTIL: '2018-06-04T20:00:00.369Z', EMAIL: 'B@B.com'}
   ]
 }

ENTITY #2
{ ID: 'entity2',
  FEATURE_A: true,
  COLLABORATORS: 
   [ 
    { UNTIL: '2018-06-10T13:00:00.369Z', EMAIL: 'A@A.com'},
    { UNTIL: '2018-08-05T10:00:00.369Z', EMAIL: 'B@B.com'}
   ]
 }

Как мне написать запрос, чтобы получить все сущности WHERE соавтор содержит A@A.com и , для которых A@A.com ещедоступ, потому что today() <<code>UNTIL?

Запрос с несколькими фильтрами, похоже, не работает с массивом объектов ... Нужно ли мне просто написать составной индекс?Я не знаю, как это сделать в настоящее время, но дорога ли это?

Спасибо.


Это "массив", записанный в моей консоли хранилища данных

{
  "values": [
    {
      "entityValue": {
        "properties": {
          "ACCESS": {
            "stringValue": "full"
          },
          "EMAIL": {
            "stringValue": "A@A.com"
          },
          "CREATEDAT": {
            "timestampValue": "2018-06-03T19:23:17.728Z"
          },
          "CREATOR": {
            "booleanValue": true
          }
        }
      }
    },
    {
      "entityValue": {
        "properties": {
          "UNTIL": {
            "stringValue": "2018-06-13T19:24:52.131Z"
          },
          "ACCESS": {
            "stringValue": "full"
          },
          "EMAIL": {
            "stringValue": "B@B.com"
          },
          "CREATEDAT": {
            "timestampValue": "2018-06-03T19:24:52.135Z"
          },
          "CREATOR": {
            "booleanValue": false
          }
        }
      }
    }
  ]
}

1 Ответ

0 голосов
/ 29 мая 2018

Пишу это как ответ, потому что, похоже, я не могу найти способ правильно вставить код в комментарии.

Наиболее похожей структурой, которую я мог воспроизвести для копирования блока COLLABORATORS, была следующая структура массива::

{
  "values": [
    {
      "entityValue": {
        "properties": {
          "UNTIL": {
            "stringValue": "1st"
          },
          "EMAIL": {
            "stringValue": "A@A.com"
          }
        }
      }
    },
    {
      "entityValue": {
        "properties": {
          "UNTIL": {
            "stringValue": "2nd"
          },
          "EMAIL": {
            "stringValue": "B@B.com"
          }
        }
      }
    }
  ]
}

Даже так я не могу получить точную копию вашей сущности, потому что тогда поле COLLABORATORS показывается так:

[{"UNTIL":"1st","EMAIL":"A@A.com"},   
{"UNTIL":"2nd","EMAIL":"B@B.com"}]   

Что не является строго тем жепотому что "UNTIL" и "EMAIL" указаны.Можете ли вы опубликовать код вашей структуры?

...