NodeJS Api框架build议,包括Graphql和ACL

我正在寻找一些NodeJS框架/软件包的build议。 小背景:我曾经在一个新手到专业级别写PHP代码。 主要使用Laravel和CodeIgniter。 由于工作变化和其他方面的原因,我在两年内没有碰过PHP。

在过去的半年中,我发现了NodeJS,我非常喜欢它,它的快速和不仅为Web创build项目,而且在桌面应用程序和移动设备上都使用相同语言的能力就是这样一个Plus。

我目前正在为我的新家工作一个家庭自动化工具,但我有点挣扎,因为我找不到一个适当的易于使用的框架(或软件包的组合)具有以下function。 (这只适用于后端,对于frondend,我将使用angular2,4,5(现在有angular度版本2))

这是我目前的标准:

  • 简单的API框架或简单的方法来实现模型。
  • 访问控制(ACL)
  • Graphql

我试过Loopback框架,我真的很喜欢它。 它检查我的列表的API框架和ACL,并且几乎可以映射到每个数据库,但是不支持Graphql。 我尝试添加一些额外的软件包(loopback-graphql-服务器,loopback-graphql和loopback-graphql-checkacl),但不幸的是我无法使它们正常工作,以太网ACL无法正常工作,或根本没有工作。 (我花了几个小时debuggingloopback-graphql-server来找出为什么我在graphql中得到一个访问被拒绝的消息时,它完全使用其余的API)

所以我正在寻找一些框架或包的组合,在这个框中工作。 任何build议都会有所帮助。

您可以按照SailJS这样的PHP开发架构,你可以很容易地pipe理它

另一方面,你可以使用快递制作自己的框架,只需要知道javascriptdevise模式如何工作

在我的build议中,您可以使用SailJS Sail JS网站

我记得DHH写关于select“ 单层巧妙 ”的文章。 他指出,尽pipe数据库能够决定哪些数据是可以接受的,哪些数据是不可接受的,那么从根本上来说,属于应用层的逻辑就应该只存在于这一个地方。

我认为GraphQL是一个再次思考这些边界的机会。

当您的数据库模式位于更强大的GraphQL模式的后面时(由于能够应用于其后的每个系统而更强大),您的数据库模式会带来什么额外的价值? 基于模型的validation有什么价值可以带来自定义types的可能性? 一旦您从中删除了行为validation,“模型”的抽象是什么价值?

这听起来像大多数的应用程序将在前端和后端,你想作为一个地方来获取数据的Angular。 在这种情况下,添加一个框架会增加系统中的代码量,提升学习需求,并且不会(IMO)在GraphQL之后提供明确的增值。

你的模式字段和parsing器实质上取代了控制器(在Rails-like MVC应用程序中),types和自定义types的某些组合处理validation,auth由Authorization头部处理(可能由Auth0在前端创build),或者一个高阶组件或者一些指令 。 所有缺less的将是一些获取数据的函数。

我的大部分数据抓取函数都是打包并导出这样的东西(这是从Arango-js中取得的示例代码 ):

 const cursor = await db.query(aql` FOR u IN _users FILTER u.authData.active == ${active} RETURN u.user `); 

这只是一个function,干净,简单和可读。 没有模型,也没有要求的ORM。

我在这里得到的是GraphQL给出了我们过去依赖框架提供的大部分(也许是所有?)结构。 本质上GraphQL是框架。 那么,一些parsing器和一些其他function可能是你所需要的。 在GraphQL背后有一个框架是有意义的,但是要想一想你的是否是其中之一。