【发布时间】:2016-05-13 05:40:57
【问题描述】:
在我的应用程序中,我获得了在 Python 系统中构建的密钥,并写入 Google 数据存储区。
为了匹配数据,我需要这些项目的 ID,它们在 'key' 字符串中。
由于没有 Python,我无法执行 key.id(),我需要使用 JavaScript / Google Apps 脚本手动“解码”它。
这可能吗?
key = Key(urlsafe=url_string)
kind_string = key.kind()
ident = key.id()
【问题讨论】:
-
一开始你是如何将密钥输入到你的 javascript 中的?
-
我使用 REST 从 Google 数据存储中获取它。它作为 JSON-blob 对象保存在那里,我对其进行解码和解析。此对象包含作为参考的键字符串,但我不能直接使用它们。
-
但是datastore JSON API 应该已经给你解码的密钥了。
-
不是真的,在这种情况下不是。我实际上从数据存储中得到的是一个字符串化的二进制版本。我无法控制其中保存的内容,因为它是一个不同的应用程序存储它,我只能读取数据。 (当我对该密钥进行base64解码时,我可以识别实体,但ID有奇怪的字符) [ { "not_applicable": false, "key": "aghlfmFoLXdibxxxxxxxxxxxVlc3Rpb24YgICAgPjChAoM", "given_score": 0 }, { "not_applicable": true , "key": "aghlfmFoLXdibxxxxxxxxxxxxlc3Rpb24YgICAgIDkkQoM", "given_score": 0 } 等
-
嗯,解码后的字符串实际上是定义密钥的 Protocol Buffer 类的序列化表示(Google 内部几乎所有东西都使用 protobufs)。如果不找到大量第三方库,您将无法轻松地使用 JS 提取数据。最好让提供此数据的应用程序以更容易解码的形式发送它。
标签: javascript python google-app-engine google-cloud-datastore app-engine-ndb