【问题标题】:Node.JS Datastore Query get KeyNode.JS 数据存储区查询获取密钥
【发布时间】:2016-10-26 17:16:21
【问题描述】:

如何获取查询返回的实体的键?

我尝试像访问普通数据一样访问它,但是当我打印实体本身时没有键。有没有办法做到这一点?

提前感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    从 @google-cloud/datastore v0.5.0 的 0.5.0 版开始,密钥现在可以通过符号访问。

    var datastore = require('@google-cloud/datastore')();
    var query = datastore.createQuery('AnimalNamespace', 'Lion');
    query.run(function(err, entities) {
    
    var keys = entities.map(function(entity) {
            // datastore.KEY is a Symbol
            return entity[datastore.KEY];
        });
    });
    

    您也可以使用 gstore-node 库 (https://github.com/sebelga/gstore-node),然后您可以通过 entity.entityKey 直接访问它

    【讨论】:

    • 谢谢。它的工作。
    • 使用datastore.Key对我有用,id是:datastore.Key.id
    • 为什么这是互联网上唯一可以解释这一点的地方?数据存储文档中的任何地方都没有提到它,甚至更新示例也没有这样做,它们总是创建一个新密钥。我不得不挖掘一个 5 岁的 SE 问题才能获得如此简单的信息,这似乎很荒谬……这是怎么回事?
    【解决方案2】:

    根据the documentation,datastore.runQuery返回一个实体对象,属性为data和key。你对key感兴趣。

    datastore.runQuery(query, function(err, entities) {
      // entities = [
      //   {
      //     data: The record,
      //     key: The key for this record
      //   },
      //   ...
      // ]
    });
    

    因此,例如使用第一个实体,您可以像这样访问密钥:

    entity = entities[0]
    key = entity.key
    

    【讨论】:

    • 不幸的是,它以这种方式返回 undefined
    • 请考虑仅在您知道自己在说什么时才回答...只是抓取一些文档并扔掉答案对任何人都没有帮助。您必须假设大多数人都能够自己阅读文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多