3

So here's my problem, we're developing a mobile app so 5 month ago when we began, we used Parse for our backend solution. Now Parse will die in a few month but luckily, we can still use Parse server by including their API. But after migrating our DB (implying in the process a lot of anger and despair :p) on mongo and hosting the server on AWS, I cannot execute my cloud code anymore. The functions I defined are not found, and with the Parse dashboard not available anymore, I can't check if my cloud funcs are deployed on the server or not. Can someone help me and tell me what I am doing wrong ? And do you guys know another way to check on cloud funcs ? Here's my index.js :

var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var math = require('mathjs');

var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI
var app = express();
Parse.initialize('XXXXXXX', 'XXXXXX');

if (!databaseUri) {
  console.log('DATABASE_URI not specified, falling back to localhost.');
}

var api = new ParseServer({
  databaseURI: databaseUri || 'XXXXXX',
  cloud: './cloud/main.js',
  appId: process.env.APP_ID || 'XXXXXX',
  masterKey: process.env.MASTER_KEY || 'XXXXXX',
  serverURL: 'http://parseserver-4w2hk-env.elasticbeanstalk.com/'
});


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

app.get('/', function(request, response) {

  Parse.Cloud.run('hello');

});

and my main.js (cloud funcs) :

Parse.Cloud.define('hello', function(req, res) {
  Parse.Cloud.httpRequest({
      url: 'http://www.parse.com/',
      success: function(httpResponse) {
        response(httpResponse.text);
      },
      error: function(httpResponse) {
        response('Request failed with response code ' + httpResponse.status)
      }
    });
});

Here's the log line, it display a 404 error for the cloud function :

[21/Feb/2016:16:58:56 +0000] "POST /functions/hello HTTP/1.1" 404 29 "-" "node-XMLHttpRequest, Parse/js1.7.1 (NodeJS 4.2.3)"

Thanks in advance ! :)

5 Answers 5

4

You should be able to call the function with an HTTP request.

Did you try the sample cloud code:

Parse.Cloud.define('hello', function(req, res) {
  res.success('Hello world!');
});

Note that the default mount path is '/parse' and not '/1' as it was with the parse.com service.

For a test using curl:

curl -X POST -H "X-Parse-Application-Id: XXX" -H "X-Parse-REST-API-Key: XXX" http://<your server>/parse/functions/hello
Sign up to request clarification or add additional context in comments.

13 Comments

I just tried the make a simple request to the parse website. I tried the sample code too, it didnt change anything. The function just doesn't execute at all, whatever the contents are. Yup I did that : var mountPath = process.env.PARSE_MOUNT || '/parse'; app.use(mountPath, api);
You can first do a console.log to check that it's called, the log should be visible on AWS (?)
I did, If i do a console.log in the cloud function, it wont be displayed (and I surrounded the function call with two console.log that appeared)
Is it working if you call it directly with a HTTP request ?
What URL should I use to do that ? I managed to do it when I had a parse server but I dont see at all how to do it now
|
2

Use cloud: __dirname+'/cloud/main.js', instead of cloud: './cloud/main.js',

Comments

0

So I have some more infos : when I do a curl POST command on my serverurl/parse/functions/hello, it works, but it gives me "Hello World" as response, so that means that my file main.js has never been uploaded on the cloud code. I am sure it has something to do with my ParseServer configuration, but I dont know what....Maybe it's because of the replicaSet, there might be another way to do it.

Comments

0

Yeah so, I don't know why, when I changed our dev environment and went on the prod, cloud functions were magically executed, so I cloned that env, and now it's working, my cloud funcs are called properly. Ahhhh the wonders of code.. Thanks anyway guys and thank you Ilya for taking some time :)

Comments

0

For hosted parse server you must restart your server every time you add a new cloud function to /cloud/main.js

regards

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.