从查询返回数据时如何获取唯一ID

时间:2019-01-28 08:50:36

标签: node.js google-cloud-platform google-cloud-datastore

我正在使用GCP数据存储作为数据库。当我初始化数据时,仍然给图像名称指定了ID,它仍然创建了具有唯一ID的Name / ID列。但是,当我尝试通过查询返回数据时,它仅返回我给定的ID。我还需要获取自动生成的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 :(得分:0)

尝试一下:

books[0][datastore.KEY]['id']

答案 1 :(得分:0)

数据存储区是NoSQL database,它为每个实体使用唯一的ID,如果您未指定,则会自动生成。

问题是您要返回datastore.KEY,其中包含following fields

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

因此,读取datastore.KEY对象的“ id”字段将为您提供实体的唯一ID。

我做了一个简单的示例,以与您相似的示例演示如何获取ID:

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];
  });
});