Как мы получаем уникальные идентификаторы при возврате данных из запроса - PullRequest
0 голосов
/ 28 января 2019

Я использую GCP Datastore в качестве базы данных.Когда я инициализировал данные, я дал имя изображения в качестве идентификатора, тем не менее, он создал столбец Имя / ID с уникальными идентификаторами.Но когда я пытаюсь вернуть данные по запросу, он возвращает только идентификатор, данный мной.Мне также нужно получить автоматически сгенерированные идентификаторы.

enter image description here

Это код, который я использую для запроса объекта.

var query = datastore.createQuery(['Defects']).filter('isProcessed', '=', false).filter('companyId', '=', id);

datastore.runQuery(query, (err, books) => callback(err, books, datastore.KEY));

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Datastore - это база данных NoSQL , и она использует уникальные идентификаторы для каждой сущности, которые автоматически генерируются, если вы не указали их.

Проблема в том, что вы возвращаете datastore.KEY, который имеет следующие поля :

Key {
  namespace: undefined,
  id: '1234567890',
  kind: 'My-Entity-Kind',
  path: [Getter] 
}

Итак, читая поле "id" в datastore.KEYобъект даст вам уникальный идентификатор сущности.

Я сделал быстрый пример, чтобы показать, как получить идентификатор в аналогичном примере с вашим:

const Datastore = require('@google-cloud/datastore');
const datastore = new Datastore();

var query = datastore.createQuery('My-Entity-Kind');

query.run((err, entities) => {
  const keys = entities.map((entity) => {
    var temp_entity = entity[datastore.KEY];

    // Save the id from the entity Key in a variable
    var entity_id = console.log(temp_entity["id"])

    // Print whole entity.KEY structure
    console.log(temp_entity)
    // Print only the entity id
    console.log(entity_id)
    // Print a random property
    console.log(entity["entity-property"]);

    return entity[datastore.KEY];
  });
});
0 голосов
/ 28 января 2019

Попробуйте это:

books[0][datastore.KEY]['id']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...