1

我有我的 nodejs 目录,它看起来像这样:

MyApp
    -app.js
    -mycredetnials.json
    -package.json
    +node_modules

在我的 app.js 文件中,我有以下代码:;

var options = {
    projectId: 'mydatastoreproject'
}

var keyFile = './mydatastoreprojectsandbox-5265e25422c.json';

if (keyFile) {
  options.keyFilename = keyFile;
}

var datastore = gcloud.datastore(options);

我正在本地计算机上运行它。我希望我的本地计算机能够连接到 Google Cloud Datastore(而不是本地模拟器)。

在我的开发者控制台中,我启用了 Google Datastore API。我在开发者控制台中创建了一个 KIND 并创建了一个实体。我还以 json 文件的形式创建了凭据(服务帐户密钥)。然后我在我的代码中包含了这个 json 文件。通过这样做,我仍然无法连接到数据存储。我错过了什么或做错了什么?基本上我想做的就是让我的本地机器连接到谷歌数据存储。

4

3 回答 3

2

当您启动本地数据存储并打印出“设置这些环境变量”时,您这样做了吗?到目前为止,您就是这样连接到本地 Datastore 的吗?默认情况下,gcloud-node 会尝试与远程 API 通信并假设没有模拟器在运行。必须告诉它与模拟器交谈,这可以通过 env var ( DATASTORE_EMULATOR_HOST) 完成。如果这是您一直在设置的,则必须取消设置(或从 JS 脚本手动执行:)delete process.env.DATASTORE_EMULATOR_HOST;

(完整答案:https ://github.com/GoogleCloudPlatform/gcloud-node/issues/1328 )

于 2016-05-19T13:05:43.027 回答
1

听起来你已经有了你所需要的假设mydatastoreprojectsandbox-5265e25422c.json是你的谷歌服务 api 密钥。

如果没有,您可以从此链接获取 Google 服务 API 密钥: https ://console.cloud.google.com/apis/credentials/serviceaccountkey?_ga=fuckuranalytics

Google 服务 API 密钥.json文件使您的 localhost 节点/npm 项目能够连接到真正的远程 google 数据存储实例。用于访问数据存储的节点库会自动检查系统上包含此密钥文件路径的环境变量。如果设置正确,您的本地节点/npm 项目将自动连接到您的密钥文件可以访问的远程谷歌数据存储。

环境变量可以通过以下方式设置:

Mac/Linux(通过命令行)

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"

Windows(通过 powershell)

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\my-key.json"

有关数据存储和节点/npm 的 google 环境变量身份验证的更多信息: https ://cloud.google.com/docs/authentication/getting-started#linux-or-macos

于 2020-09-02T10:41:47.240 回答
0

我没有尝试过 ptyhon,但我认为这也适用于你。我试过go并使用这个库,你应该安装gcloud并从控制台登录gcloud beta auth application-default login,这解决了很多头痛,我发现它无意中阅读了这篇文章

于 2018-06-18T02:56:08.987 回答