设置替代 Node.js 服务以在本地与 Parse Server 通信

Setting up an alternative Node.js service to locally communicate with Parse Server

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

目前我在 Parse Cloud Code 中构建的函数很少,而且很乱,因为:

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

你会怎么做?我应该考虑哪些注意事项?

谢谢!

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

解决您的具体问题:

  • 问题一: 解析云代码实际上支持ES6。我必须将 'use strict'; 添加到我的文件的顶部才能使其正常工作。 Parse 支持 promise。它不仅有一个 Parse-native promise 库(here),您还可以将任何 Promise 库添加为 NPM 模块。我通常将 Bluebird 添加到我的 package.json 中,这样我就可以使用一些很酷的收集方法(map、each 等)。
  • 问题二:我承认将所有函数都放在一个文件中有点烦人,但我想出了一个解决方案这让它变得更容易一些:我只是将 (request, response) 传递给另一个模块中的函数:

    const userTrigger = require('./triggers/userTrigger.js');
    
    Parse.Cloud.beforeSave('_User', (request, response) => {
        userTrigger.beforeSave(request, response);
    });
    
    // *notice ES6 syntax above
    
  • 问题三:我不确定你的问题出在哪里。您是否将 MongoDB 实例与 Parse Server 托管在同一台机器上?那么,是的,我认为您应该将其托管在单独的机器上。但我认为您使用 "client" 来托管后端逻辑的方法有点矫枉过正。重申一下:Parse Server 是一个后端服务器……那是您的后端逻辑应该驻留的地方。

如果您仍有问题,请告诉我。即使您不使用云代码,您仍然可以拥有与 Parse Server 托管在同一台机器上的传统 API 端点。看看 Parse Server 中的 index.js,我在这个级别编写了很多函数,以便我可以绕过应用程序的 Parse Server 组件。

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

我们还有用与解析服务器分离的节点编写的后端,consume/produce 解析服务器数据 in/out 的微服务。