我想我漏掉了什么,但我想不出来。我使用Google Datastore
(通过nodeJS
),我想写一个简单的查询。
让我们考虑一个包含这两个简化实体的DB,其中collaborator
代表“在some date
之前,someone
可以访问这个实体”:
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
collaborator包含 A@A.com
仍有权访问的A@A.com
和,因为today()
< UNTIL
使用多个过滤器的查询似乎不适用于对象数组...我是否“只”需要编写一个综合索引?这个时候我不知道该怎么做,但是这是步行的路吗?
谢谢。
这是写入到我的数据存储区控制台中的"array“
{
"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
}
}
}
}
]
}
发布于 2018-05-29 23:03:16
写这篇文章作为答案,因为我似乎找不到在注释中正确插入代码的方法。
复制COLLABORATORS块时我能复制的最相似的结构是以下数组结构:
{
"values": [
{
"entityValue": {
"properties": {
"UNTIL": {
"stringValue": "1st"
},
"EMAIL": {
"stringValue": "A@A.com"
}
}
}
},
{
"entityValue": {
"properties": {
"UNTIL": {
"stringValue": "2nd"
},
"EMAIL": {
"stringValue": "B@B.com"
}
}
}
}
]
}
即使这样,我也无法获得您的实体的精确副本,因为这样合作者的字段将如下所示:
[{"UNTIL":"1st","EMAIL":"A@A.com"},
{"UNTIL":"2nd","EMAIL":"B@B.com"}]
这并不是严格意义上的相同,因为“直到”和“电子邮件”都被引号了。你能发布你的结构的代码吗?
https://stackoverflow.com/questions/50555789
复制相似问题