Javascript 设置替代Node.js服务以在本地与解析服务器通信

Javascript 设置替代Node.js服务以在本地与解析服务器通信,javascript,node.js,parse-platform,parse-server,Javascript,Node.js,Parse Platform,Parse Server,我目前正在为一个应用程序使用Node.js+Parse Server,使用客户端的大部分Parse SDK,还有许多更改和重构要对应用程序进行。这个应用程序的一个问题是,一些逻辑应该位于云代码中,而不是内置在客户端中 目前,我在解析云代码中只构建了一小部分函数,它们非常混乱,因为: 问题1:解析云代码不允许ES6。甚至不支持承诺。这使得它的代码非常难看,并且与应用程序的其他部分完全不同,应用程序的大部分内容都使用ES6+TS(它是一款Ionic 3/4应用程序) 问题2:我讨厌把所有这些函数都

我目前正在为一个应用程序使用Node.js+Parse Server,使用客户端的大部分Parse SDK,还有许多更改和重构要对应用程序进行。这个应用程序的一个问题是,一些逻辑应该位于云代码中,而不是内置在客户端中

目前,我在解析云代码中只构建了一小部分函数,它们非常混乱,因为:

  • 问题1:解析云代码不允许ES6。甚至不支持承诺。这使得它的代码非常难看,并且与应用程序的其他部分完全不同,应用程序的大部分内容都使用ES6+TS(它是一款Ionic 3/4应用程序)
  • 问题2:我讨厌把所有这些函数都放在一个文件中。看起来可扩展性很差,在其中导航变得更加困难
  • 问题3:此应用程序设计为“相当大”。我们需要做的一个更改是将mongodb服务器更改为另一台机器,这样网络和服务器负载更易于管理,但我认为将解析服务器实例与执行某些后端逻辑的实例分离也是很好的
恢复:我认为最好的解决方案是制作一个Node.js实例来管理云代码。它将拥有主密钥和对解析服务器的完全访问权,因此它可以像客户端一样工作,但不会向假设的攻击者公开逻辑

你会怎么做?我应该考虑哪些因素


谢谢大家!

您应该了解的一件事是:解析服务器是一个Node.js服务器。它只处理许多事情,如身份验证、会话管理等,开箱即用

要解决您的具体问题:

  • 问题一:解析云代码实际上支持ES6。我必须添加
    “使用严格”到我的文件顶部,使其工作。Parse确实支持承诺。它不仅有一个解析本机承诺库(),还可以将任何承诺库添加为NPM模块。我通常会将Bluebird添加到我的package.json中,以便使用一些很酷的收集方法(map、each等)
  • 问题二:我承认将所有函数都放在一个文件中有点烦人,但我想出了一个更简单的解决方案:我只需将
    (请求、响应)
    传递给不同模块中的函数:

    const userTrigger = require('./triggers/userTrigger.js');
    
    Parse.Cloud.beforeSave('_User', (request, response) => {
        userTrigger.beforeSave(request, response);
    });
    
    // *notice ES6 syntax above
    
  • 问题三:我不确定你的问题在这里。您是否将MongoDB实例托管在与解析服务器相同的计算机上?那么,是的,我想你应该把它放在另一台机器上。但我认为,您使用一个承载后端逻辑的“客户机”的方法是过分的。只是重申一下:解析服务器是一个后端服务器。。。这就是后端逻辑应该驻留的地方


如果你还有麻烦,请告诉我。即使您不使用云代码,您仍然可以使用传统的API端点,这些端点与解析服务器托管在同一台机器上。看看Parse Server中的index.js,我已经在这个级别编写了很多函数,这样我就可以绕过应用程序的Parse Server组件。

您应该了解的一点是:Parse Server是一个Node.js服务器。它只处理很多事情,比如身份验证、会话管理等,开箱即用

要解决您的具体问题:

  • 问题一:解析云代码实际上支持ES6。我必须添加
    “使用严格”到我的文件顶部,使其工作。Parse确实支持承诺。它不仅有一个解析本机承诺库(),还可以将任何承诺库添加为NPM模块。我通常会将Bluebird添加到我的package.json中,以便使用一些很酷的收集方法(map、each等)
  • 问题二:我承认将所有函数都放在一个文件中有点烦人,但我想出了一个更简单的解决方案:我只需将
    (请求、响应)
    传递给不同模块中的函数:

    const userTrigger = require('./triggers/userTrigger.js');
    
    Parse.Cloud.beforeSave('_User', (request, response) => {
        userTrigger.beforeSave(request, response);
    });
    
    // *notice ES6 syntax above
    
  • 问题三:我不确定你的问题在这里。您是否将MongoDB实例托管在与解析服务器相同的计算机上?那么,是的,我想你应该把它放在另一台机器上。但我认为,您使用一个承载后端逻辑的“客户机”的方法是过分的。只是重申一下:解析服务器是一个后端服务器。。。这就是后端逻辑应该驻留的地方


如果你还有麻烦,请告诉我。即使您不使用云代码,您仍然可以使用传统的API端点,这些端点与解析服务器托管在同一台机器上。看看Parse Server中的index.js,我已经在这个级别编写了很多函数,这样我就可以绕过应用程序的Parse Server组件。

我会加倍使用类似的响应,我们有一个处理1000或RPS的设置,云代码只是“需要”d进入解析服务器,将stsrtj处的代码注入解析服务器“运行时”


我们还将后端写在与解析服务器分离的节点中,这些微服务在解析服务器中消费/生成数据

我会加倍使用类似的响应,我们有一个处理1000或RPS的设置,云代码只是“需要”d到解析服务器,将您的代码在stsrtj注入解析服务器“运行时”


我们还将后端写在与解析服务器分离的节点中,这些微服务在解析服务器中消费/生成数据

解析服务器托管在哪里?解析服务器托管在哪里?