【问题标题】:Entity key and data properties not defined when retrieving from local datastore从本地数据存储区检索时未定义实体键和数据属性
【发布时间】:2017-03-05 12:30:12
【问题描述】:

我正在尝试遵循 Google 的文档,这是我面临的问题。根据文档here,当我检索到这样的实体时

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

datastore.get(key, function(err, entity) {
    // entity.data = The record.
    // entity.key = The key.
});

我应该得到一个具有 key 和 data 属性的实体对象。那不是我得到的。这是我的阅读功能

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

既未定义数据也未定义密钥。相反,检索到的实体看起来像这样

{
  "age": 23,
  "name": "Hello World"
}

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

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

"dependencies": {
    "async": "^2.0.1",
    "body-parser": "^1.15.2",
    "express": "^4.14.0",
    "google-cloud": "^0.43.0",
    "yargs": "^5.0.0"
 }

【问题讨论】:

    标签: node.js google-app-engine google-cloud-datastore gcloud


    【解决方案1】:

    自 @google-cloud/datastore v0.5.0 起,密钥可从符号访问。

    var datastore = require('@google-cloud/datastore')();
    
    var key = datastore.key(['Company', 'Google']);
    
    datastore.get(key, function(err, entity) {
        var key = entity[datastore.KEY];
    });
    

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

    【讨论】:

    • 谢谢,这行得通。但我必须说我真的对此感到沮丧。他们无法更新他们的文档?
    • 是的,我发现它是因为它破坏了 gstore-node 并且必须查看他们的提交。
    • 实际上他们更新了查询 query.run(function(err,entities) { var keys = entities.map(function(entity) { return entity[datastore.KEY]; }); });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多