我正在使用GCP数据存储作为数据库。当我初始化数据时,仍然给图像名称指定了ID,它仍然创建了具有唯一ID的Name / ID列。但是,当我尝试通过查询返回数据时,它仅返回我给定的ID。我还需要获取自动生成的ID。
这是我用来查询实体的代码。
var query = datastore.createQuery(['Defects']).filter('isProcessed', '=', false).filter('companyId', '=', id);
datastore.runQuery(query, (err, books) => callback(err, books, datastore.KEY));
答案 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];
});
});