Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在本地运行分析后台作业_Javascript_Parse Platform_Parse Cloud Code - Fatal编程技术网

Javascript 如何在本地运行分析后台作业

Javascript 如何在本地运行分析后台作业,javascript,parse-platform,parse-cloud-code,Javascript,Parse Platform,Parse Cloud Code,我试图在本地运行解析后台作业,而不是解析云。我需要节点SDK,因为浏览器SDK不支持使用此作业所需的主密钥 以下是我为在本地运行作业所做的尝试: var Parse = require('parse-cloud-express').Parse; Parse.Cloud.job("myBackgroundJob", function(request, status) { status.success("Hello world!"); }); 我有两个问题: 我不知道如何实际执行这项

我试图在本地运行解析后台作业,而不是解析云。我需要节点SDK,因为浏览器SDK不支持使用此作业所需的主密钥

以下是我为在本地运行作业所做的尝试:

var Parse = require('parse-cloud-express').Parse;

Parse.Cloud.job("myBackgroundJob", function(request, status) {

    status.success("Hello world!");

});
我有两个问题:

  • 我不知道如何实际执行这项工作。我认为
    Parse.Cloud.job
    调用只会注册它。我可能需要以某种方式初始化SDK(使用API键),但我不知道如何初始化
  • 当我运行此代码时,它会输出运行作业在parse cloud express中不受支持的
    ,这让我相信我可能无法以这种方式运行它

  • 结果比我想象的要容易得多。我仍然会发布我的解决方案,以防它对某人有所帮助

    为了让它工作,您需要在
    myBackgroundJobFile.js
    文件中注册一个名为
    myBackgroundJob
    的作业。您还需要一个包含作业参数的
    params.json
    文件

    我使用的是
    eval()
    而不是
    require
    ,因为它允许我按原样使用文件(这意味着该文件也可以在解析时使用,无需修改)


    我很好奇,这种方法是否也适用于新的解析服务器体系结构?
    var fs = require('fs');
    var Parse = require('parse/node').Parse;
    var BackgroundJobs = {}
    
    var JobRequest = function (params) {
        this.params = params;
    };
    var JobStatus = function () {};
    JobStatus.prototype.error = function () {};
    JobStatus.prototype.message = function () {};
    JobStatus.prototype.success = function () {};
    
    Parse.Cloud.job = function (jobName, jobCall) {
        BackgroundJobs[jobName] = jobCall;
    };
    function callBackgroundJob(jobName, params) {
        var jobCall = BackgroundJobs[jobName];
        if (!jobCall) {
            console.error("There is no registered background job named `" + jobName + "`.");
            return Parse.Promise.error();
        } else {
            var request = new JobRequest(params);
            var status = new JobStatus();
            return jobCall(request, status);
        }
    }
    
    eval(fs.readFileSync('myBackgroundJobFile.js').toString());
    
    Parse._initialize("APPLICATION_ID", "JAVASCRIPT_KEY", "MASTER_KEY");
    Parse.Cloud.useMasterKey();
    
    var params = JSON.parse(fs.readFileSync('params.json', 'utf8'));
    callBackgroundJob("myBackgroundJob", params);