解析服务器云代码不响应任何查询

Parse server cloud code not responding on any query

我最近将 parseserver 迁移到了 heroku,除了我的 Cloud Code 之外,一切似乎都运行良好 Parse.Query 似乎从未响应过。

我可以 运行 自定义云代码,但是任何时候我需要 运行 一个 Parse.Query 请求超时。

这是我的代码:

Parse.Cloud.define("get_remaining_minutes", function(request, response) {

var config_name = "RWMTrialMinutes";
var minutesForPeriod = 120;
var isTrial = true;
var periodStartDate = new Date("01/01/2015");
var minutesUsed = 0;

console.log("userId=" + request.params.userId);
var userQuery = new Parse.Query(Parse.User);

userQuery.get({ useMasterKey: true }).then(request.params.userId, {
    success: function(user) {
       console.log("success");
        response.success(100);
    },
    error: function(object, error) {
        console.log("failed");
        response.error(error);
    }
});
});

然后我打电话给: curl -X POST -H "X-Parse-Application-Id: xxx" https://xxx.herokuapp.com/parse/functions/get_remaining_minutes?userId=dMbBrRGD1y

并获得超时

2016-10-13T17:21:21.858269+00:00 heroku[路由器]: at=info method=POST path="/classes/_User" host=xxx.herokuapp.com request_id=xxx fwd="xxx" dyno=web.1 connect=0ms service=7ms status=404 bytes=225 2016-10-13T17:21:21.788404+00:00 app[web.1]: userId=dMbBrRGD1y 2016-10-13T17:21:51.759088+00:00 heroku[路由器]: at=error code=H12 desc="Request timeout" method=POST path="/parse/functions/get_remaining_minutes?userId=dMbBrRGD1y " host=xxxx.herokuapp.com request_id=xxx fwd="xxx" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0

我试过很多不同的查询方式——试过.first、.get、.find,似乎都在做同样的事情——超时。如果我跳过 .get 调用,该函数工作正常,我可以 response.success 正确。但是,我显然需要查询才能使我的代码正常工作。

我觉得我缺少一些基本的东西,比如需求或者路径设置不正确。

我还会提到我运行正在同一个 Heroku 应用程序上连接解析服务器和仪表板,如果您认为这对云代码失败的原因有影响的话。

有什么想法吗?

编辑:添加我的 index.js 代码以启动解析服务器和仪表板

var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var ParseDashboard = require('parse-dashboard');
var path = require('path');

var allowInsecureHTTP = true;

var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI;


var api = new ParseServer({
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'xxx',
  masterKey: process.env.MASTER_KEY || '',
  serverURL: process.env.SERVER_URL || 'xxx.herokuapp.com/parse',
  restAPIKey: 'xxx',
push:{
ios:{
      pfx: 'Push.p12',
      bundleId: 'xxx',
      production: true
     }
   }
}, allowInsecureHTTP);

var dashboard = new ParseDashboard({
users: [{
   user: 'admin',
  pass: 'xxx'
 }],
apps: [
 {
  serverURL: process.env.SERVER_URL + process.env.PARSE_MOUNT ||      'https://xxx.herokuapp.com/',
  appId: process.env.APP_ID || 'myAppId',
  masterKey: process.env.MASTER_KEY || '',
  appName: process.env.APP_NAME || 'StoryTime',
  iconName: 'Icon-60.png'
   }
 ],
 "iconsFolder": "icons"
 }, allowInsecureHTTP);

var app = express();

app.use('/public', express.static(path.join(__dirname, '/public')));


var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);

//start the dashboard
app.use('/dashboard', dashboard);

 app.get('/', function(req, res) {
   res.status(200).send('I dream of being a website.  Please star the parse-    server repo on GitHub!');
 });


var port = process.env.PORT || 1337;
var httpServer = require('http').createServer(app);
httpServer.listen(port, function() {
    console.log('parse-server-example running on port ' + port + '.');
});

原来有两个问题 - 首先是服务器配置不正确。 SERVER_URL 上没有 /parse - 因为 PARSE_MOUNT 属性 被用来在 express 中路由,所以我错过了它。其次, .get() 的 useMasterKey 语法需要像这样——我从网上的某个地方复制了代码,但它不正确。

userQuery.get(request.params.userId, { useMasterKey:true, success: function(user)....