Это контекст:
У меня есть функция GCP, которая должна перейти в хранилище данных, чтобы получить некоторые данные для возврата массива клиенту.
Проблема:
Я не могу добиться того, чтобы функции GCP возвращали данные, когда я использую фильтры Datetime для своего кода, однако, когда я помещаю эквивалентный запрос в консоль GCP Datastore Query, я могу добиться возврата большого количества строк.
Технические данные:
Datastore GQL:
select * from KIND where recordDate >= DATETIME ("2018-10-10T10:10:00.000000+03:00") and recordDate <= DATETIME ("2018-10-11T10:10:00.999999+03:00")
(работает на консоли GCP Datastore)
Код функций GCP:
query = datastore.createQuery(kind).filter('recordDate','>=',dateFrom).filter('recordDate','<=',dateTo);
console.log(query);
datastore.runQuery(query, (err,entities) => {
console.log(err);
console.log(entities);
});
(выполняется runQuery () ... всегда возвращает значение null в качестве переменной err и возвращает массив void для переменной объекта)
Нужная мне помощь:
Кто-нибудь может сказать мне пример успешного случая запроса, который
возвращает объекты, использующие фильтры Datetime?
Способы, которые я пробовал в формате dateFrom и dateToVars:
- DATETIME ("2018-10-10T10: 10: 00.000000 + 03: 00")
- DATETIME ("2018-10-10 10:10:00")
- "2018-10-10T10: 10: 00,000000 + 03: 00"
- '2018-10-10T10: 10: 00,000000 + 03: 00'
- DATETIME ("2018-10-10")
- "2018-10-10"
- ДАТА ("2018-10-10")
- ДАТА ('2018-10-10')
- DATETIME (2018-10-10T10: 10: 00.000000 + 03: 00)
И никто не работает: (
ОБНОВЛЕНИЕ (2018-11-19):
Я напечатал запрос, прежде чем выполнить runQuery, и получил это:
(Я ставлю некоторые точки, чтобы защитить чувствительные данные)
{
"textPayload": "Query {\n scope: \n Datastore {\n clients_: Map {},\n datastore: [Circular],\n namespace: undefined,\n projectId: '................',\n defaultBaseUrl_: 'datastore.googleapis.com',\n baseUrl_: 'datastore.googleapis.com',\n options: \n { libName: 'gccl',\n libVersion: '2.0.0',\n scopes: [Array],\n servicePath: 'datastore.googleapis.com',\n port: 443,\n projectId: 'c..........' },\n auth: \n GoogleAuth {\n checkIsGCE: undefined,\n jsonContent: null,\n cachedCredential: null,\n _cachedProjectId: 'c..........',\n keyFilename: undefined,\n scopes: [Array] } },\n namespace: null,\n kinds: [ '....KIND......' ],\n filters: \n [ { name: 'recordDate', op: '>', val: 2018-10-10T00:00:00.000Z },\n { name: 'recordDate', op: '<', val: 2018-10-12T23:59:59.000Z } ],\n orders: [],\n groupByVal: [],\n selectVal: [],\n startVal: null,\n endVal: null,\n limitVal: 20,\n offsetVal: -1 }",
"insertId": "............................098...",
"resource": {
"type": "cloud_function",
"labels": {
"region": "us-central1",
"function_name": "...................-get-search",
"project_id": "............."
}
},
"timestamp": "2018-11-19T21:19:46.737Z",
"severity": "INFO",
"labels": {
"execution_id": "792s.....lp"
},
"logName": "projects/......./logs/cloudfunctions.googleapis.com%2Fcloud-functions",
"trace": "projects/........../traces/4a457.......",
"receiveTimestamp": "2018-11-19T21:19:52.852569373Z"
}
А код функций:
query = datastore.createQuery(kind).filter('recordDate','>',new Date(dateFrom)).filter('recordDate','<',new Date(dateTo)).limit(20);
console.log(query);
var test = datastore.runQuery(query, (err,entities) => {
console.log(err);
console.log(entities);
entities.forEach(entity => {
console.log(entity);
});
return{
entities:entities,
err:err
};
});
console.log(test);