我有一个应用程序部署到 App Engine,并且想从我在本地运行的 Node.js 应用程序访问该应用程序的数据存储区。我从Node 的 Hello World 应用程序开始,并尝试从我部署的应用程序的数据存储区中检索一个实体,并按照本文档将其记录到控制台。我的 Node 应用程序代码如下。
var express = require('express');
var gcloud = require('gcloud')({
projectId: 'myProjectId',
keyFilename: __dirname + 'myKeyfile.json'
});
var datastore = gcloud.datastore;
var dataset = datastore.dataset();
var app = express();
app.get('/', function(req, res) {
dataset.get(dataset.key(['Practice', 4392384]), function(err, entity) {
if (err) {
console.log("ERROR: " + err);
} else {
console.log("Practice entity: " + entity);
}
});
res.status(200).send('Hello, world!');
});
var server = app.listen(process.env.PORT || 8081, function () {
var host = server.address().address;
var port = server.address().port;
console.log('App listening at http://%s:%s', host, port);
});
我已经按照这些说明(在“从另一个平台访问现有的 App Engine 数据存储”标题下)在我的 App Engine 应用程序中设置了一个服务帐户,并生成了一个 JSON 密钥文件,该文件位于我的 Node 项目的根目录(与应用程序.js)。尝试从数据存储中获取有效实体时,我记录了“ApiError:Forbidden”错误。我只能推测 App Engine 项目没有正确配置服务帐户或 Cloud Datastore API 没有正确启用,所以我显然做错了什么,或者我可以通过任何方式获得有关返回的错误的更多详细信息?