2015-01-24 13 views
6

Ich verwende Parse Cloud Code für eine soziale mobile Anwendung. Ich möchte den Cloud-Code skalierbar machen, aber Parse hat einige Regeln, denen ich folgen muss. Die Struktur ist wie folgt:Parse Cloud Code Struktur

Nur die main.js ist eine Notwendigkeit und mobile Clients können nur Funktionen innerhalb main.js aufrufen.

In meinen Kunden verwende ich MVC als eine Architektur, aber ich bin nicht sicher, welche Art von Architektur ich in meinem Cloud-Code verwenden sollte. Wie sollte meine Cloud-Code-Architektur sein?

Gibt es eine allgemeine Backend-Architektur, die ich verwenden kann?

Antwort

7

Ich habe selbst eine Struktur erstellt. Aber es kann sicherlich verbessert werden.

Ich habe versucht, meine main.js einfach zu machen. Ich habe nur die Namen der Funktionen hinzugefügt, die außerhalb des Cloud-Codes aufgerufen werden.

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

In file1.js schrieb ich Funktionen wie folgt.

// 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 
} 

Ich exportierte Module wie gezeigt, weil es den Code lesbarer macht. Ich kann nur auf den Anfang des Codes schauen und sehen, welche Funktionen ich aus dieser Datei verwenden kann. Sie können die docs export style verwenden.

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

Das war sehr hilfreich! Ich ging noch einen Schritt weiter und machte folgendes: '' ' var CloudFunctions = require ('./ source/cloud-functions.js'); _.each (_. Schlüssel (CloudFunctions), Funktion (Funktionsname) { Parse.Cloud.define (Funktionsname, CloudFunctions [FunktionsName]); }); '' ' Auf diese Weise müssen Sie nicht jedes definieren. Arbeitet für Jobs, speichert/löscht usw. –

0

Innerhalb des Cloud-Codes lebt main.js so wie es ist. Alle Cloud-Code-Funktionen leben in dieser einzigen Datei. Es gibt keine Modulation oder zusätzliche Architektur.

Parse.Cloud.run (Name, Daten, Optionen) ist die einzige Möglichkeit, Parse Cloud-Funktionen aufzurufen.

R

0

Sie können den Code in Module aufgeteilt durch ein neues Modul neben main.js zu schaffen, sagen services.js

und erfordern es in main.js

require("cloud/services.js"); 

Schließlich werden alle Cloud-definierte Funktionen in dieser Datei wird wie in main.js für Sie verfügbar sein. Dies liegt daran, dass Parse alles in dieser Datei ausführt, wenn Sie require it, was im Wesentlichen bedeutet, dass Sie nur diesen ganzen Code in eine separate Datei faktoriert haben.

+0

Ich wollte einen ähnlichen Kommentar machen. Ich habe Cloud-Funktionen in mehreren verschiedenen Modulen definiert und sowohl Android- als auch iOS-Apps finden sie. Ich erkannte an Main.js Linie 5000 oder so, dass Module der Weg zu gehen waren! – MayNotBe

Verwandte Themen