【发布时间】:2016-04-20 02:19:40
【问题描述】:
我有一个应用程序部署到 App Engine,并希望从我在本地运行的 Node.js 应用程序访问该应用程序的数据存储区。我从Hello World app for Node 开始,并试图从我部署的应用程序的数据存储中检索一个实体并将其记录到this documentation 之后的控制台。我的 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 应用程序中按照these directions(在“从另一个平台访问现有的 App Engine 数据存储区”标题下)设置了一个服务帐户,并在我的 Node 项目的根目录中生成了一个 JSON 密钥文件(与 app.js 相同的目录)。尝试从数据存储中获取有效实体时,我记录了“ApiError:Forbidden”错误。我只能推测 App Engine 项目未正确配置服务帐户或未正确启用 Cloud Datastore API,所以我显然做错了什么,或者我可以通过任何方式获得有关返回的错误的更多详细信息?
【问题讨论】:
-
只是确认我目前有完全相同的问题。在本地使用 Node.js 0.10、0.12 和 4.2.3 以及一些旧版本的 gcloud 进行了尝试。也许这是 Google Cloud 中的临时问题?
标签: node.js google-app-engine gcloud-node