从本地数据存储区检索时未定义的实体键和数据属性

kid*_*sew 1 google-app-engine node.js google-cloud-datastore gcloud

我试图跟随谷歌文档,这是我面临的问题.根据这里的文档,当我检索这样的实体

var key = datastore.key(['Company', 'Google']);

datastore.get(key, function(err, entity) {
// entity.data = The record.
// entity.key = The key.
});
Run Code Online (Sandbox Code Playgroud)

我应该得到一个具有键和数据属性的实体对象.那不是我得到的.这是我的阅读功能

function read(kind, id, cb) {
    var key = datastore.key([kind, parseInt(id, 10)]);
    datastore.get(key, (err, entity) => {
    if(err) {
        return cb(err);
    }

    if(!entity) {
        return cb({
            code: 404,
            message: 'Not found'
        });
    }
    cb(null, entity.data);
});
Run Code Online (Sandbox Code Playgroud)

}

数据或密钥均未定义.相反,退休的实体看起来像这样

{
  "age": 23,
  "name": "Hello World"
}
Run Code Online (Sandbox Code Playgroud)

这显然只是数据.我究竟做错了什么?我正在研究gcloud数据存储模拟器

如果它是相关的,这是我的依赖项

"dependencies": {
    "async": "^2.0.1",
    "body-parser": "^1.15.2",
    "express": "^4.14.0",
    "google-cloud": "^0.43.0",
    "yargs": "^5.0.0"
 }
Run Code Online (Sandbox Code Playgroud)

Séb*_*oix 5

自@ google-cloud/datastore v0.5.0起,密钥可从Symbol中访问.

var datastore = require('@google-cloud/datastore')();

var key = datastore.key(['Company', 'Google']);

datastore.get(key, function(err, entity) {
    var key = entity[datastore.KEY];
});
Run Code Online (Sandbox Code Playgroud)

当然你总是可以使用gstore-node(免责声明:我是该库的所有者)然后你只需要通过entity.entityKey访问它.