用Nodejs和Fauna构建一个命令行工具

184 阅读4分钟

命令行工具是我们今天最流行的应用之一。我们每天都在使用命令行工具,它们的范围从git、npm或yarn。命令行工具对于自动化应用和工作流程来说非常快速和有用。

我们将在这篇文章中用Node.js和Fauna为我们的数据库建立一个命令行工具。此外,我们将使用Node.js创建一个随机报价应用程序,并为我们的应用程序添加权限和关键字。

前提条件

为了充分利用本教程,请确保你在本地开发环境中安装了以下内容。

  • 安装了Node.js版本>=16.x.x。
  • 能够访问一个软件包管理器,如npmyarn
  • 能够访问Fauna仪表板。

开始使用Fauna

使用电子邮件凭证或GitHub账户注册一个新账户。你可以在这里注册一个新账户。一旦你创建了一个新的账户或登录,你将会受到仪表盘屏幕的欢迎。

创建一个新的Fauna实例

要使用Fauna服务创建一个新的数据库实例,你必须遵循一些简单的步骤。在仪表盘屏幕上,按下 "新建数据库 "按钮。

接下来,输入数据库的名称并保存。一旦数据库实例建立起来,你就可以使用访问密钥了。使用访问密钥来连接授权,以及从一个单页的应用程序连接到数据库。要创建你的访问密钥,请导航到侧面菜单,并进入安全标签,点击新密钥按钮。

创建一个集合

导航到你的仪表板,从侧面菜单中点击集合标签,按新集合,按钮,为新集合输入你想要的名字,然后保存。

创建索引

为了完成设置,为我们的应用程序创建索引。索引是必不可少的,因为在Fauna中使用索引通过匹配用户输入的ern字段来搜索文档。通过导航到Fauna仪表板的Indexes标签来创建索引。

现在,我们已经准备好使用Node.js和数据库建立我们的笔记命令行应用程序。

初始化Node.js应用程序并安装依赖项

本节将初始化一个Node.js应用程序,并使用NPM包安装我们需要的依赖项。我们还将从这个链接中建立一个简单的报价应用程序

开始使用

为了开始,让我们在终端上使用下面的代码块为我们的应用程序在项目文件夹内创建一个文件夹。

mkdir quotes_cli
cd quotes_cli
touch quotes_app
npm init -y

在上面的代码块中,我们创建了一个新的目录,导航到该目录,并创建了一个名为quotes_app的新文件,最后初始化了npm的依赖关系。接下来,添加一个包,使用axios向报价服务器发出请求

npm i axios

添加一个包为我们的文本着色,chalk是一个NPM包,帮助我们在终端上的打印中添加颜色。要添加粉笔,使用下面的代码块

npm i chalk 让我们也使用该代码块导入一个dotenv包。

npm i dotenv

构建引言应用程序

在我们的quotes_app文件中,让我们添加以下代码块

const axios = require('axios')
const chalk = require('chalk');
const dotenv = require('dotenv');
const url = process.env.APP_URL
axios({
  method: 'get',
  url: url,
  headers: { 'Accept': 'application/json' },
}).then(res => {
  const quote = res.data.contents.quotes[0].quote
  const author = res.data.contents.quotes[0].author
  const log = chalk.red(`${quote} - ${author}`) 
  console.log(log)
}).catch(err => {
  const log = chalk.red(err) 
  console.log(log)
})

在上面的代码块中,我们导入了axios、chalk和dotenv。我们添加了数据库的URL,即我们的Fauna数据库,使用axios,我们对URL进行了GET请求,并添加了头文件,使我们能够获得json格式的响应。

为了记录一句话,我们使用JavaScript promises将这句话和它的作者记录在我们的控制台,并添加了一个catch方法来捕捉错误。

在我们运行之前,让我们使用下面的代码改变我们文件的权限。

chmod +x quotes_app

接下来,使用我们下面的关键字运行该应用程序。

./quotes_app

我们应该得到一个类似于下图的结果

总结

在这篇文章中,我们了解了更多关于Fauna和Node.js的命令行工具。你可以扩展该应用程序,使其能够实时添加日期提醒。