迹忆客 专注技术分享

当前位置:主页 > 学无止境 >

使用 Koa、Yarn Workspaces 和 Objection.js 创建 Node.JS API

作者:迹忆客 最近更新:2022/10/16 浏览次数:

我是一名全栈开发人员,使用 Laravel 的魔力在极短的时间内为我的客户展示最好的东西。 我确实更喜欢使用框架来节省开发时间,并确保我所做的一切都能让我更有效率,并给我很多时间来拖延。

但最近,由于客户的可扩展性要求,我不得不使用 Node JS 构建东西。

现在是选择框架的时候了,我对此提出了三个要求:

  • 应用程序必须像 Laravel 一样神奇
  • 应用程序必须使用 MySQL
  • 认证必须像奶酪一样光滑流畅

我本可以选择出色的 Adonis.js(受 Laravel 启发),但客户还有另一个要求:应用程序必须可扩展并拆分为微小的微服务。 因此,我不得不走不同的道路。

好吧,我选择了以下规范以使我的工作更轻松(就像在 laravel 中一样):

  • 语言:Node.JS(当然)
  • 框架:Koa JS(建立在 Express 之上,具有一些特殊功能)
  • ORM:Objection.js(经过几次 google 搜索、与 sequelize 的语法比较等和 reddit 意见后选择)
  • 数据库:MySQL

让我们开始安装

# 建一个新文件夹并键入以下内容:
$ yarn init
$ yarn add koa koa-router koa-jwt koa-body @koa/cors objection knex mysql mysql2
$ yarn start

不是一种好的教学方式,但必须尽快完成(我稍后将它们分开)。 以下是关于上述所有内容的简介:

  • Koa:具有更好错误处理能力的异步轻量级 NodeJS 框架
  • Koa-router:处理路由(对服务器的请求)
  • Koa-JWT:使用 JSON Web Tokens 对用户进行身份验证
  • Koa-Body: 解析 POST 请求体
  • @koa/cors:允许不同的来源(避免 Preflight Request Failed 或 CORS )
  • Objection:有助于轻松创建数据库查询的 ORM(Knex 支持 Objection)
  • MySQL/MySQL2:MySQL 驱动程序

现在让我们创建入口文件

index.js

//导入我们安装的所有包
const koa = require("koa");
const router = require("koa-router")();
const jwt = require("koa-jwt");
const koaBody = require("koa-body");
const cors = require("@koa/cors");
const Knex = require("knex");
const knexConfig = require("./config/knexfile");
//Initialize Your App
var app = new koa();
/* CORS :: 必须避免 CORS 错误 */
var corsOptions = {
origin: "*",
};
app.use(cors(corsOptions));
//Importing Objection.js (ORM)
const {
Model,ForeignKeyViolationError,ValidationError} = require("objection");
const knex = Knex(knexConfig.development);
Model.knex(knex);
app.use(koaBody()); //Body Parser
api.use(router.routes());

// 创建我们的第一个路由
router.get('/', (ctx)=>{ctx.body='It`s Working';}
/* Listener:: Your App Listens on this port */
app.listen(3000);

我们使用箭头函数创建从 http://localhost:3000 返回“It's Working”的路由/

参数 ctx 是一个上下文,一个提供一系列属性的对象,如请求、响应正文、标头等(想象一个服务员带着食物和账单回来,然后带着钱和小费回来)。 我们将响应正文更改为使用 ctx.body 来表示“It's Working”。

后续会继续介绍 Objection.js 语法、模块和中间件……

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 NodeJS 检查 MongoDB 中是否存在集合

发布时间:2023/04/21 浏览次数:194 分类:MongoDB

在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。

忽略 Node_modules 文件夹

发布时间:2023/04/06 浏览次数:110 分类:Git

在处理项目时,你可能不希望 git 跟踪某些文件夹;这些可以是 .env 文件、node_modules 文件夹等。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便