解析云代码的结构

9

我正在使用Parse Cloud Code开发社交移动应用。我希望使云代码具有可扩展性,但是Parse有一些规则必须遵守。代码结构如下:

cloud/
    main.js
    other.js
    otherfile/
        someother.js
        ...
    ...

只有 main.js 是必要的,移动客户端只能调用 main.js 内部的函数。

在我的客户端中,我使用 MVC 作为架构,但我不确定应该在云代码中使用什么样的架构。我的云代码架构应该是什么样的?

是否有通用的后端架构可供使用?

3个回答

14

我自己建立了一个结构。但它肯定可以改进。

我试图让我的main.js尽可能简单。我只添加将在云代码外调用的函数名称。

// Include all of the modules
var module1 = require('cloud/folder1/file1.js');
var module2 = require('cloud/folder1/file2.js');
var module3 = require('cloud/folder2/file1.js'); 
var backgroundjob = require('cloud/backgroundjob/background.js'); 

Parse.Cloud.job("startBackgroundJob", backgroundjob.startBackgroundJob);
Parse.Cloud.define("do_this_stuff", module1.thisfunction);
Parse.Cloud.define("do_this_stuff2", module1.notthisfunction);
Parse.Cloud.define("do_that_stuff", module2.thatfunction);
Parse.Cloud.define("do_dat_stuff", module3.datfunction);

在 file1.js 文件中,我编写了以下函数。

// Include libraries
var utils = require("cloud/utils/utils.js");
var _ = require('underscore');

// Export Modules
module.exports = {
  thisfunction: function (request, response) {
    addComment(request, response);
  },
  thatfunction: function (request, response) {
    getComment(request, response);
  },
};

function addComment(request, response) {
    // write your code here
    var stuff = utils.callThisFunction(param); // This is the usage of another function in another file
    response.success("Comment added"); // or error but do not forget this
} 

function getComment(request, response) {
    // write your code here
    response.success("Got Comment"); // or error but do not forget this
}

我按照所示导出模块,因为这样可以使代码更易读。我只需查看代码顶部即可了解可以从此文件中使用哪些函数。您可以使用文档导出风格

exports.addComment = function(request, response) {
    // your code
    response.success();
}

1
这非常有帮助!我更进一步并执行了以下操作:var CloudFunctions = require('./source/cloud-functions.js'); _.each(_.keys(CloudFunctions), function (functionName) { Parse.Cloud.define(functionName, CloudFunctions[functionName]); });这样你就不需要定义每一个函数。同样适用于作业、保存/删除等。 - Omair Vaiyani

0

你可以通过创建一个新模块并将其放在 main.js 旁边,比如说 services.js,来将你的代码分成模块。

并且在 main.js 中引用它。

require("cloud/services.js");

最后,该文件中定义的所有云函数将像在main.js中一样对您可用。这是因为当您require它时,Parse会运行该文件中的所有内容,这实际上意味着您将所有代码分解到单独的文件中。


我本来就想发表类似的评论。我在几个不同的模块中定义了云函数,而且安卓和 iOS 应用程序都可以找到它们。在 Main.js 的第 5000 行左右,我意识到使用模块是正确的做法! - MayNotBe

-1

在云代码中,main.js 保持不变。所有的云代码函数都在这个单一文件中。没有模块化或其他架构。

Parse.Cloud.run(name, data, options) 是调用 Parse 云函数的唯一方式。

R


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接