Directus 数据库内容的实时 API 和应用程序仪表板

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Directus 是用于管理 SQL 数据库内容的实时 API 和应用程序仪表板。

Directus介绍

Directus 是用于管理 SQL 数据库内容的实时 API 和应用程序仪表板。

  • 免费和开源。没有人为限制、供应商锁定或隐藏的付费墙。
  • REST 和 GraphQL API。立即在任何 SQL 数据库之上构建速度极快的 Node.js API。
  • 管理纯 SQL。适用于新的或现有的 SQL 数据库,无需迁移。
  • 选择您的数据库。支持 PostgreSQL、MySQL、SQLite、OracleDB、CockroachDB、MariaDB 和 MS-SQL。
  • 本地或云。在本地运行、在本地安装或使用我们的 自助云服务(提供免费套餐)。
  • 完全可扩展。内置白标,很容易定制我们的模块化平台。
  • 现代仪表板。我们的无代码 Vue.js 应用程序对于非技术用户来说是安全且直观的,无需培训。

这个怎么运作

Directus 作为层安装在新的或现有的 SQL 数据库之上。

应用程序和 API 实时动态地“镜像”您的实际架构和内容。这类似于技术数据库客户端(如phpMyAdmin)的工作方式。但是,Database Introspection 有许多独特的优势:

  • 绝对控制您的纯 SQL 数据库模式。
  • 为您的数据提供完全的透明度、可移植性和安全性。
  • 允许导入现有数据库,无需更改且无需迁移。
  • 直接数据库访问和原始复杂 SQL 查询的全部功能。
  • 通过优化和索引显着提高性能。

它是给谁的?

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 数据库供应商。

  • Node.js 12.20+
  • npm 6.x+

支持的数据库

  • PostgreSQL 10+
  • MySQL 5.7.8+ / 8+(带有 mysql_native_password)
  • MariaDB 10.2.7+
  • SQLite 3+
  • CockroachDB 21.1.13+ [1]
  • 微软 SQL 13+ [1]
  • OracleDB 19+ [1]

旧版本可能有效,但未经官方测试/支持。

支持的操作系统

  • Ubuntu 18.04
  • CentOS / RHEL 8
  • macOS Catalina 或更新版本
  • 视窗 10/11
  • Docker(DockerHub + Dockerfile)

API 参考

动态 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]}

这种更新一对多的方法对于较小的关系数据集非常有用。

项目设置

一般的

  • 项目名称——导航栏顶部和登录/公共页面上使用的名称
  • 项目描述符- 显示在导航栏顶部项目名称下方 和登录/公共页面上的描述符
  • 项目 URL - 单击模块栏顶部的徽标时的 URL
  • 默认语言- 应用程序中使用的默认语言。

模块

  • 模块栏- 允许对模块栏中显示的链接进行以下自定义。通过切换复选框显示或隐藏模块,通过拖动排序手柄重新排序链接,或使用以下字段创建新的自定义链接:Name - 模块链接的标题,也显示在悬停时的工具提示中图标- 选择模块按钮的图标URL — 应以Directus 应用程序/中的链接开头

#安全

  • Auth Password Policy — 通过 JavaScript 正则表达式为所有用户的密码设置策略要求。支持以下选项:无 — 不推荐弱 - 至少 8 个字符强 - 大写、小写、数字和特殊字符
  • Auth Login Attempts — 设置在用户帐户被锁定之前允许的失败登录尝试次数。锁定后,需要管理员用户解锁帐户。

文件和存储

该平台的文件中间件允许即时裁剪和转换图像资产。这意味着您可以简单地请求原始图像,包括任何所需的转换参数,并且您将获得新资产作为响应。

要通过请求大量随机大小来阻止恶意用户消耗您的存储空间,您可以使用以下选项来限制可能的转换。

  • Allowed Transformations - 用于启用、禁用或限制图像转换
  • 默认文件夹— 设置添加新资产的默认文件夹。这不会影响现有文件。请注意,字段可能会覆盖此值。
  • 转换预设- 允许设置特定的图像转换以简化请求或限制使用。Key - 一个唯一标识符,允许更快、更轻松的图像转换请求适合 - 包含(保留纵横比)、覆盖(强制精确大小)、适合内部或适合外部宽度 - 图像的宽度高度 - 图像的高度质量 - 图像的压缩或质量放大 - 启用后,图像不会被放大格式 - 允许将输出格式更改为:JPG、PNG、WebP 或 TIFF

自定义面板

扩展入口点

面板的入口点是扩展包文件夹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,};

可用选项

  • id— 此面板的唯一键。使用作者前缀限定专有面板的范围是一种很好的做法。
  • name— 此面板的可读名称。
  • icon— 来自材料图标集的图标名称,或 Directus 自定义图标的扩展列表。
  • description— 应用程序中显示的此面板的简短说明(<80 个字符)。
  • component— 对您的面板组件的引用。
  • options— 面板的选项。可以是选项对象或专用的 Vue 组件。
  • minWidth- 仪表板上面板的最小网格单位宽度。
  • minHeight- 仪表板上面板的网格单位的最小高度。

面板组件

面板组件是扩展程序的一部分,当您的面板应用于 Insights 模块内的仪表板中的数据可视化时,Directus 应用程序将呈现该组件。这个面板组件必须是 Vue 组件。编写 Vue 组件最直接的方法是使用 Vue 单文件组件语法。

使用 Vue SFC 语法的面板组件示例:

#可用道具

  • showHeader boolean — 是否显示标题。对于基于额外/减少空间的替代样式很有用。
  • dashboard uuid - 包含面板的仪表板的 UUID 字符串。
  • height number - 面板的当前配置高度。
  • width number - 面板的当前配置宽度。
  • now Date - 查看包含面板的仪表板时的 Date 对象。

—END—

开源协议:GPL-3.0 license

开源地址:https://github.com/directus/directus

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章