《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Directus 是用于管理 SQL 数据库内容的实时 API 和应用程序仪表板。
Directus 是用于管理 SQL 数据库内容的实时 API 和应用程序仪表板。
Directus 作为层安装在新的或现有的 SQL 数据库之上。
应用程序和 API 实时动态地“镜像”您的实际架构和内容。这类似于技术数据库客户端(如phpMyAdmin)的工作方式。但是,Database Introspection 有许多独特的优势:
Directus 让整个团队一起工作并在一个地方访问数据。
开发
人员 开发 人员获得了一个完整的数据连接工具包,其中包含 REST 和 GraphQL API、一个 JavaScript SDK、访问全局变量以自定义配置选项,以及对数字资产的直接命令行访问。
高级用户
数据分析师和数据科学家拥有应用内工具来查询数据、构建应用内分析仪表板以及以文件格式提取或上传数据。此外,这些用户仍然可以自由链接其他服务并直接在数据库上运行原始 SQL 查询。
商业用户
无代码应用程序足够安全和直观,可以让每个人都可以访问数据,即使是最非技术的用户。管理员可以为角色以及单个用户创建完全精细的权限。
通过运行以下 npm 命令创建一个新的 Directus 项目:
npm init directus-project my-project
或者,使用纱线:
yarn create directus-project my-project
只需按照设置提示操作,CLI 就会创建您的新项目目录(例如:)my-project、配置文件和初始数据库。为了充分利用 Directus,并确保您拥有最新的安全补丁,让您的项目保持最新非常重要。
Directus 只需要 Node.js 并支持大多数操作系统和 SQL 数据库供应商。
支持的数据库
旧版本可能有效,但未经官方测试/支持。
支持的操作系统
动态 API
该平台的 API 使用数据库镜像动态生成 REST 端点和基于连接数据库架构的 GraphQL 模式。由于这些端点根据您的特定架构和配置的权限返回数据,因此 API 的输入/输出对于各个安装有很大不同。
REST 与 GraphQL
REST 和 GraphQL 端点之间的可用功能没有区别。两者中可用的功能都映射到同一组核心服务,这意味着您不会因选择其中一个而失去任何性能或功能。
验证
默认情况下,系统中的所有数据对未经身份验证的用户都是禁止访问的。要获得对受保护数据的访问权限,您必须 在每个请求中包含访问令牌,或者 为公共角色配置权限。
关系数据
Directus 仅检索项目中明确请求的字段。可以使用 REST 中的fields参数或 GraphQL 中的常规嵌套查询来嵌套检索关系数据。例如,这允许您检索文章数据中包含的文章作者,或获取应用程序分析数据的相关日志入口点。
#创建/更新/删除
与获取类似,关系内容也可以进行深度修改。
#多对一
多对一关系的关系管理相当简单。您可以简单地将所需的更改作为对象提交到集合中的关系键下。例如,如果您想在页面上创建新的特色文章,您可以提交:
{"featured_article": {"title": "This is my new article!"}}
这将在相关集合中创建一条新记录,并将其主键保存在featured_article该项目的字段中。要更新现有项目,只需提供更新的主键,Directus 会将其视为更新而不是创建:
{"featured_article": {"id": 15,"title": "This is an updated title for my article!"}}
看到多对一关系将外键存储在字段本身上,可以通过使字段无效来删除项目:
{"featured_article": null}
#一对多(/多对多)
一对多,因此多对多和多对任意关系可以通过以下两种方式之一进行更新:
基本的
API 将返回一对多字段作为嵌套键或项的数组(基于fields参数)。您可以使用相同的结构来选择相关项目是什么:
{"children": [2, 7, 149]}
您还可以提供一个对象而不是主键来动态创建嵌套的新项目,或者提供一个包含主键的对象来更新现有项目:
{"children": [2, // assign existing item 2 to be a child of the current item{"name": "A new nested item"},{"id": 149,"name": "Assign and update existing item 149"}]}
要从此关系中删除项目,只需从数组中省略它们:
{"children": [2, 149]}
这种更新一对多的方法对于较小的关系数据集非常有用。
一般的
模块
#安全
文件和存储
该平台的文件中间件允许即时裁剪和转换图像资产。这意味着您可以简单地请求原始图像,包括任何所需的转换参数,并且您将获得新资产作为响应。
要通过请求大量随机大小来阻止恶意用户消耗您的存储空间,您可以使用以下选项来限制可能的转换。
扩展入口点
面板的入口点是扩展包文件夹index内的文件。src/它导出一个配置对象,其中包含配置面板行为的选项。加载面板时,此对象由 Directus 主机导入。
入口点示例:
import PanelComponent from './panel.vue';export default {id: 'custom',name: 'Custom',icon: 'box',description: 'This is my custom panel!',component: PanelComponent,options: [{field: 'text',name: 'Text',type: 'string',meta: {interface: 'input',width: 'full',},},],minWidth: 12,minHeight: 8,};
可用选项
面板组件
面板组件是扩展程序的一部分,当您的面板应用于 Insights 模块内的仪表板中的数据可视化时,Directus 应用程序将呈现该组件。这个面板组件必须是 Vue 组件。编写 Vue 组件最直接的方法是使用 Vue 单文件组件语法。
使用 Vue SFC 语法的面板组件示例:
{{ text }}
#可用道具
—END—
开源协议:GPL-3.0 license
开源地址:https://github.com/directus/directus
留言与评论(共有 0 条评论) “” |