我最近将parseserver迁移到了heroku,除了我的Cloud Code之外,一切看起来都很完美。任何Parse.Query似乎都没有响应。
我可以运行自定义云代码,但是只要我需要运行Parse.Query,请求就会超时。
这是我的代码:
nullptr
然后我打电话给:
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 [router]: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 [router]: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调用,该函数工作正常,我可以正确响应。但是我显然需要查询我的代码才能工作。
我觉得我缺少一些基本的东西,比如需要或路径设置不正确。
我还要提到我在同一个Heroku应用程序上运行解析服务器和仪表板,如果你认为这会对云代码失败的原因产生影响。
有什么想法吗?
编辑:添加我的index.js代码以启动解析服务器和仪表板
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);
}
});
});
答案 0 :(得分:0)
原来有两个问题 - 首先服务器配置不正确。 SERVER_URL没有/解析它 - 并且由于PARSE_MOUNT属性被用于在express中路由,我错过了它。其次,useMasterKey的语法需要像.get()这样 - 我从某处在线复制了代码并且它不正确。
userQuery.get(request.params.userId, { useMasterKey:true, success: function(user)....