2016-10-13 1 views
0

J'ai récemment migré le parseserver vers heroku, et tout semble fonctionner parfaitement, sauf dans mon code de Cloud, tout Parse.Query ne semble jamais répondre.Le code cloud du serveur d'analyse n'a pas répondu à aucune requête

Je peux exécuter du code de nuage personnalisé, mais chaque fois que j'ai besoin d'exécuter un Parse.Query, la requête expire.

voici mon code:

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); 
    } 
}); 
}); 

J'appelle alors: boucle -X POST -H "X-parse-Application-Id: xxx" https://xxx.herokuapp.com/parse/functions/get_remaining_minutes?userId=dMbBrRGD1y

et obtenir un délai d'attente

2016-10-13T17: 21: 21.858269 + 00: 00 heroku [routeur]: à = info méthode = POST chemin d'accès = "/ classes/_User" hôte = xxx.herokuapp.com request_id = xxx fwd = "xxx" dyno = web.1 connect = service 0ms = statut 7ms = 404 octets = 225 2016-10-13T17: 21: 21.788404 + 00: 00 app [w eb.1]: userId = dMbBrRGD1y 2016-10-13T17: 21: 51.759088 + 00: 00 heroku [routeur]: at = code d'erreur = H12 desc = méthode "Request timeout" = chemin POST = "/ parse/functions/get_remaining_minutes? userId = dMbBrRGD1y "hôte = xxxx.herokuapp.com demande_id = xxx fwd =" xxx "dyno = web.1 connexion = 1ms service = 30000ms statut = 503 octets = 0

J'ai essayé plusieurs façons de query - essayé .first, .get, .find, tous semblent faire la même chose - timeout. Si j'ignore l'appel .get, la fonction fonctionne correctement et je peux answer.success correctement. Cependant, je dois évidemment faire en sorte que la requête pour mon code fonctionne. J'ai l'impression qu'il me manque quelque chose de basique, comme un besoin ou peut-être un chemin n'est pas configuré correctement.

Je mentionnerai également que j'exécute le serveur et le tableau de bord d'analyse sur la même application Heroku si vous pensez que cela fait une différence quant à la raison pour laquelle le code du cloud est défaillant.

Des idées?

Edit: ajouter mon code pour index.js à partir parse-serveur et le tableau de bord

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 + '.'); 
}); 
+0

Et comment démarrez-vous le serveur d'analyse? Montrez-nous la configuration, vous devez définir le fichier pour le code de nuage là –

+0

J'ai mis à jour la question pour inclure mon code exprès pour démarrer le serveur d'analyse et le tableau de bord. – rfranczyk

+0

Il s'avère qu'il y avait deux problèmes - d'abord le serveur a été mal configuré. le SERVER_URL ne l'a pas/analyser - et parce que la propriété PARSE_MOUNT était utilisée pour router dans express, je l'ai manqué. Deuxièmement, la syntaxe de useMasterKey doit être la même pour .get() - J'ai copié le code depuis un endroit en ligne et ce n'était pas correct. userQuery.get (request.params.userId, {useMasterKey: true, succès: fonction (utilisateur) – rfranczyk

Répondre

0

Turns out, il y avait deux problèmes - d'abord le serveur a été configuré de manière incorrecte. le SERVER_URL ne l'a pas/analyser - et parce que la propriété PARSE_MOUNT était utilisée pour router dans express, je l'ai manqué. Deuxièmement, la syntaxe de useMasterKey doit être la même pour .get() - J'ai copié le code depuis un endroit en ligne et ce n'était pas correct.

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