设置备用Node.js服务以与Parse Server进行本地通信

时间:2017-09-06 06:14:07

标签: javascript node.js parse-platform parse-server

我目前正在使用Node.js + Parse Server作为应用程序,使用来自客户端的大部分Parse SDK,仍有许多更改和重构要对应用程序执行。该应用程序存在的一个问题是,某些逻辑应该位于Cloud Code而不是内置于客户端。

目前我在Parse Cloud Code中只有很少的功能,而且它们很乱,因为:

  • 问题1:解析云代码不允许使用ES6。甚至不支持承诺。这使得它的代码非常难看并且与应用程序的其余部分完全不同,后者主要使用ES6 + TS(它是Ionic 3 / Angular 4应用程序)。
  • 问题2:我讨厌在一个文件中包含所有这些功能。看起来可扩展性很差,并且难以浏览它们。
  • 问题3:此应用旨在“非常大”。我们要做的一个改变是将mongodb服务器更改为另一台机器,因此网络和服务器负载更容易管理,但我认为将Parse Server实例与执行某些后端的实例分开也是一件好事。逻辑。

恢复:我认为最好的解决方案是创建一个Node.js实例来管理Cloud Code。它将具有主密钥和对Parse服务器的完全访问权限,因此它可以像客户端一样工作,但不会将逻辑暴露给假想的攻击者。

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

谢谢!

2 个答案:

答案 0 :(得分:3)

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

解决您的具体问题:

  • 问题一:解析云代码实际 支持ES6。我必须在文件顶部添加'use strict';才能使其正常工作。解析 支持承诺。它不仅具有Parse本机承诺库(here),还可以将任何Promise库添加为NPM模块。我通常将Bluebird添加到我的package.json中,以便我可以使用一些很酷的收集方法(地图,每个等)。
  • 问题二:我承认将所有功能都放在一个文件中有点烦人,但我已经提出了一个解决方案更简单一点:我只是将(request, response)传递给另一个模块中的函数:

    const userTrigger = require('./triggers/userTrigger.js');
    
    Parse.Cloud.beforeSave('_User', (request, response) => {
        userTrigger.beforeSave(request, response);
    });
    
    // *notice ES6 syntax above
    
  • 问题三:我不确定您的问题在这里。您是否在与Parse Server相同的计算机上托管MongoDB实例?然后,是的,我认为你应该在一台单独的机器上托管它。但我认为你有一个"客户"托管你的后端逻辑是过度的。重申一下:Parse Server是一个后端服务器......你的后端逻辑应该驻留在哪里。

如果您仍然遇到麻烦,请告诉我。即使您不使用云代码,您仍然可以拥有与您的Parse Server托管在同一台计算机上的传统API端点。看看Parse Server中的index.js,我已经在这个级别写了很多函数,这样我就可以绕过app的Parse Server组件。

答案 1 :(得分:2)

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

我们还在节点中编写了后端,这些节点与解析服务器分开,微服务在解析服务器中使用/生成数据。