使用Parse服务器开源API不执行云代码功能

时间:2016-02-21 17:23:15

标签: javascript node.js mongodb parse-platform cloud-code

所以这是我的问题,我们正在开发一个移动应用程序,所以5个月前,当我们开始时,我们使用Parse作为我们的后端解决方案。现在Parse会在几个月内死掉但幸运的是,我们仍然可以通过包含他们的API来使用Parse服务器。但是在移植我们的数据库(暗示过程中有很多愤怒和绝望:p)在mongo上并在AWS上托管服务器之后,我再也无法执行我的云代码了。找不到我定义的功能,并且Parse仪表板不再可用,我无法检查我的云功能是否部署在服务器上。有人可以帮助我并告诉我我做错了什么吗?你们知道另一种检查云功能的方法吗? 这是我的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');

});

和我的main.js(云功能):

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

这是日志行,它显示云功能的404错误:

[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)”

提前致谢! :)

5 个答案:

答案 0 :(得分:3)

您应该可以使用HTTP请求调用该函数。

您是否尝试过示例云代码:

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

请注意,默认的装载路径为' / parse'而不是' / 1'与parse.com服务一样。

使用curl进行测试:

curl -X POST -H "X-Parse-Application-Id: XXX" -H "X-Parse-REST-API-Key: XXX" http://<your server>/parse/functions/hello

答案 1 :(得分:2)

使用cloud:__ dirname +'/ cloud / main.js', 而不是云:'。/ cloud / main.js',

答案 2 :(得分:0)

所以我有更多的信息:当我在我的serverurl / parse / functions / hello上执行curl POST命令时,它可以工作,但它给了我“Hello World”作为响应,这意味着我的文件main.js从未上传过云代码。我确信它与我的ParseServer配置有关,但我不知道是什么......也许是因为replicaSet,可能还有另一种方法可以做到。

答案 3 :(得分:0)

是的,我不知道为什么,当我改变我们的开发环境并继续生产时,云功能被神奇地执行了,所以我克隆了env,现在它正在工作,我的云功能被正确调用。啊啊代码的奇迹.. 无论如何,谢谢你们,感谢Ilya花了一些时间:)

答案 4 :(得分:0)

对于托管解析服务器,每次向/cloud/main.js添加新的云功能时都必须重新启动服务器

问候