如果你正在使用FeathersJS构建JavaScript项目,那么您将会被FeathersJS提供的钩子挂起功能十分便利所吸引,该功能可以让开发者通过注册预定义的行为和回调函数来动态监控事件。然而,时常会遇到多个钩子复杂交错的情况。而npm委员会发布了一个@smartnewbs/feathersjs-hook-logic,这可以轻松构建星际战舰级别的钩子,我们将使用这个包提供的功能详细讲解。
安装
npm 包@smartnewbs/feathersjs-hook-logic可以直接通过npm获取安装:
npm install @smartnewbs/feathersjs-hook-logic --save
使用
让我们首先看一个hooks.js文件的示例,它使用FeathersJS的钩子来检查用户登录:
-- -------------------- ---- ------- ----- - ------------ - - -------------------------------------------- -------------- - - ------- - ---- - ------------------- -- ----- --- ----------- -- ------ - ----------- ---- -- -- ------ - ----------- ---- -- - --
现在假设我们想要添加一个新的钩子,在用户请求时检查用户是否有适当的权限。我们可以使用@smartnewbs/feathersjs-hook-logic包中的logic钩子来实现。
让我们来看具体步骤:
- 首先,安装@smartnewbs/feathersjs-hook-logic:
npm install @smartnewbs/feathersjs-hook-logic --save
- 在你的钩子中,导入logic钩子,并使用它来设置新的钩子:
-- -------------------- ---- ------- ----- - ------------ - - -------------------------------------------- ----- - ----- - - --------------------------------------------- --------------- ----- ---------------- - ----- --------- -- - ------------- -- ------------------------------ ------ -------- - ---- - ----- --- --------------------- - -- -------------- - - ------- - ---- - ------------------- -- ----- --- ------- -------------------------- ------- -------------------------- ------ -------------------------- ------- ------------------------- -- ------ - ----------- ---- -- -- ------ - ----------- ---- -- - --
- 完成上述步骤之后,您的应用现在可以验证用户是否具有适当的权限,以上示例可以在将用户试图创建,更新或删除数据时抛出错误。
深度解析逻辑钩子
现在,让我们来深入了解@smartnewbs/feathersjs-hook-logic的令人惊叹的功能。
在上面的示例中,我们使用logic钩子将checkPermissions函数附加到create、update和patch请求的前面,以允许我们在执行实际请求之前进行权限检查。如果在权限检查中抛出错误,则新请求将被阻止。
逻辑钩子的重要特点是它可以自动在context.params中挂载一个“logicalState”对象。我们可以在这个对象中设置任何数据,这在验证复杂的请求时非常方便。
下面的示例演示了如何在逻辑钩子中使用逻辑状态:
-- -------------------- ---- ------- ----- ---------------- - ----- --------- -- - ----- - ------------ - - --------------- --------------------------- - ------ --------------------------- -- ------------------- ----- --------------------------- - ----- - ---- - ----- --- ----------------------- - ------ -------- -- ----- ----------- - ----- --------- -- - ----- - ------------ - - --------------- -- ------------------------------ -------- - ---- - -------------- - ------ -------- -- -------------- - - ------- - ---- - ------------------- -- ----- --- ------- --------------------------------------------- ------- --------------------------------------------- ------ --------------------------------------------- ------- -------------------------------------------- -- ------ - ----------- ---- -- -- ------ - ----------- ---- -- - --
在上面的示例中,我们使用逻辑钩子设置了一个新的“shouldContinue”逻辑状态,并在doSomething钩子中使用它来继续执行请求。
结论
@smartnewbs/feathersjs-hook-logic是一个功能强大而易于使用的钩子包,该包提供的逻辑钩子和状态机特性可确保更加复杂的请求中的可靠验证,同时减少您的开发工作量。
我们强烈建议您尝试使用该包,并发现它如何简化和优化钩子的管理。如果您想了解更多关于逻辑钩子用法及开发实践,请查看npm包@smartnewbs/feathersjs-hook-logic的文档。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056ce781e8991b448e69a3