使用fastify + sequelize搭建node.js后端心得记录(1):初步运行起来

目录

前言

一、初始化项目+引入额外的依赖

1)初始化fastify框架

2) 梳理现有内容

二、引入sequelize,连接并操作数据库

1)配置链接 

然后别忘了,自己的数据库什么类型,要引入相应的依赖哦 

3)配置相应的插件服务 

 4)配置路由

三、测试接口 

Dig-in(挖掘一下细节)

1、fastify

(1)RESTful参数获取

(2)app.js注册新包时,包下JS文件

2、sequelize

总结


前言

node.js框架试水!思想类似Spring boot的controller-service-repository,之前做java开发用的Spring Boot+Spring Data JPA,因此想要用类似的moduel来尝试node.js后端搭建。新人第一次写文章写心得,同时也是第一次写node.js项目,如果有什么意见或者错误希望各位能够多多提出🙇‍



一、初始化项目+引入额外的依赖

1)初始化fastify框架

        我们选择好项目目录地点后,在目录地点使用cmd,使用以下指令:

项目目录地址>npm init fastify

这里举个例子,我希望新项目在D:\test下,因此就是:D:\test> npm init fastify

输入指令后,项目文件下就会新增相应的文件,

 生成好项目文件后,使用npm install,为项目引入相应的模组包。

 至此,一个最最基础的fastify项目就生成成功了,此时直接npm run dev,即可体验到最预设的功能了。

 (此为项目根请求,默认返回为{"root":true})

2) 梳理现有内容

        好,关闭cmd窗口来停止下项目,回头看一下,我们在init fastify的时候生成了什么文件

 node_moduels、2个package.json和gitignore就不多说了,讲讲其他几个:

  • app.js:启动项js,npm run时会读取app.js的数据再运行整个fastify项目
  • plugins包:放置插件的包,app.js中指明扫描此包并注册插件
  • routes包:放置各种路由地址的包,相当于接口包
  • test包:测试拥抱,可以对各种插件和接口进行测试(本章暂时不讲)

好,fastify配置好了,是时候对sequelize动手了。 





二、引入sequelize,连接并操作数据库

1)配置链接 

还是来到项目根目录,我们引入2个包:

>npm install sequelize
>npm install sequelize-fastify
  • sequelize: sequelize模组包
  • sequelize-fastify:一个插件包,用于帮助注册配置sequalize连接至fastify中 

思路:根据sequelize的文档,每个Model都要配置一个数据库连接信息(sequelize),因此将sequelize的连接信息提取出来作为全局变量是个可行且较为方便的方案。

//params.json,在App.js同一目录下
{
    "database":{
        "selectedDatabase":"sequelize-test",
        "type":"mysql",
        "host":"localhost",
        "port":"3306",
        "username":"root",
        "password":"workspace"
    }
}

来到app.js,

//**一般情况下配置文件应该为.env,但我这里懒,单纯把配置放在了params.json文件里
//**然后使用fs和JSON解析获取本地配置参数
const jsonFs = fs.readFileSync("params.json");
const params = JSON.parse(jsonFs);

//在moduel.exports里添加新的代码

module.exports = async function (fastify, options) {
  //fastify也有内置log,这里通过fastify.log引出并使用
  const log = fastify.log;

  // Place here your custom code!
  //第一步,链接数据库(配置sequelize链接),将连接信息配置至fastify中作为全局变量
  fastify
    .register(require("sequelize-fastify"), {
      //必填*:连接信息在全局变量中的名称
      instance: "sequelize",
      sequelizeOptions: {
        //要链接的数据库名称
        database: params.database.selectedDatabase,
        //必填*:要链接的数据库的类型
        dialect: params.database.type,
        //要登陆的数据库用户名
        username: params.database.username,
        //密码
        password: params.database.password,
        //sequelize原先直接console.log()的,换成fastify封装的log用
        logging: (sql) => {
          log.info(sql);
        },

        //其他选项
        options: {
          // host
          host: params.database.host,
          //端口
          port: params.database.port,
        },
      },
    })
    //fastify插件配置并注册成功后可以接着使用.ready()方法作为回调函数
    .ready(async () => {
      //这里我们使用.ready()来看一下数据库连接情况如何,并验证链接是否成功
      //注意这里已经可以通过fastify.sequelize直接获得到数据库连接信息了
      fastify.sequelize
        .authenticate()
        .then(() => {
          log.info("Connection has been established successfully.");
        })
        .catch((err) => {
          log.error("Unable to connect to the database:", err);
        });
    });

    //其他代码暂时不动
};
<
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值