简介
Objection-visibility 是一个 Node.js ORM(Object Relational Mapper) 库,它提供了一种简单的方式处理表数据,但是它默认情况下不支持类似关系数据库中 SELECT
语句的 GROUP BY
子句,所以 objection-visibility
库就被创建了。
安装
可以使用 npm 安装该包:
npm install objection-visibility
基础用法
objection-visibility
主要提供了一个方法 visible
来定义一个 Model 的属性可见性,只有指定的属性会被返回,例如以下的代码,它只显示 displayName
, id
和 email
:
-- -------------------- ---- ------- ----- ---- ------- ----- - ------ --- ----------- - ------ -------- - ------ --- --------- - ------ --------------- ----- --------- - -
在使用 select
查询时,只会返回这些属性的值:
const users = await User.query().select();
深层用法
除了 visible
方法之外,还提供了 invisible
方法来定义不可见的属性。另外,您可以为每个属性定义一个可见性回调函数,该函数接受一个上下文对象,并且允许你屏蔽整个属性,例如:
-- -------------------- ---- ------- ----- ---- ------- ----- - ------ --- ----------- - ------ -------- - ------ --------- - ------ ---------------- - ------ ----------- - ------ ------------- - ------ ----------- ------------ ----- -- - -- -------------------- -- -------------- --- --------- - ------ ---------- - ------ --- - ------ --- ------------ - ------ - ----- --------- ----------- - --------- - ----- -------- -- --- - ----- --------- -- ------ - ----- -------- -- ------------ - ----- -------- - - -- - -
visible
定义哪些属性是可见的。invisible
定义哪些属性是不可见的。visibleIf
定义一个回调函数,只有在特定条件下属性才会可见。
在上面的示例中,password
属性被定义为不可见的,displayName
属性被定义为可见的,当 currentUser
是管理员或 owner
的 ID 与 currentUser
的 ID 相同时,email
属性也可见。
结论
objection-visibility
的主要作用是提供了数据属性的可见性方法,不仅如此,还提供了回调函数的类型判断,大大提升了开发人员的效率和代码可读性。虽然它的使用方法看起来有些复杂,但只要掌握一定的方法和技巧,就很容易使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/objection-visibility