用Node.js+express+Sequelizes实现服务端增删改查Api接口

什么是Express ?

Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能

什么是Sequelize ?

点击进入:Sequelize官网
Sequelize 是一个基于 promise 的 Node.js ORM 工具, 目前支持 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server, Amazon Redshift 和 Snowflake’s Data Cloud. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能.

var express = require('express');
var router = express.Router();
var models = require('../models') // 引用模型
var Op =models.Sequelize.Op; // 实现模糊查询需要引入OP
// 全部数据列表的接口
router.get('/', function(req, res, next) {
   // model.Articles拿到Articles表,findAll查出所有数据
   // 'id','DESC'倒叙,  ASC正序
   models.Article.findAll({order:[['id','DESC']]}).then(data =>{
    res.json({Article:data})
  })
});
// 新增接口的实现
router.post('/', function(req, res, next) {
  // model.Articles拿到Articles表,findAll查出所有数据
  // 'id','DESC'倒叙,  ASC正序
res.json({'内容': req.body})
  models.Article.create(req.body).then(data =>{
   res.json({Article:data})
 })
});
// 查看接口的实现
//findByPk()方法可以查出Article表id为req.params.id的文章
router.get('/:id', async function(req, res, next) {
const article = await models.Article.findByPk(req.params.id)
res.json({Article:article})
});
// 修改接口的实现
//findByPk()方法可以查出Article表id为req.params.id的文章
router.put('/:id', async function(req, res, next) {
  // 拿到表article中前端传过来的id,拿到当前文章
  const article = await models.Article.findByPk(req.params.id)
  // update()修改数据
  article.update(req.body)
  //返回被修改后的文章
  res.json({Article:article})
  });
// 删除接口的实现
router.delete('/:id', async function(req, res, next) {
  // 拿到表article中前端传过来的id,拿到当前文章
  const article = await models.Article.findByPk(req.params.id)
  // destroy()删除数据
  article.destroy()
  //返回被修改后的文章
  res.json({msg:'删除成功!'})
  });
// 模糊查询接口的实现
router.get('/', async function(req, res, next) {
  // 保存查询的空对象
  var where ={}
  // 模糊查询标题 接收标题
  var title =req.query.title
 // 如果传标题过来
  if(title){
   where.title = {
    // like :sql语法,%表示前后可以更其他文字
   [Op.like]:'%'+title+'%'

   }}
  var article = await models.Article.findAll({
    order:[['id','DESC']],
    where:where
  })
  res.json({Article:article})
});
// 文章列表 模糊查询  分页功能接口的统一实现
router.get('/', async function(req, res, next) {
  // 当前页
  var currentPage = parseInt(req.query.currentPage) || 1
  // 每页显示多少条
  var pageSize = parseInt(req.query.pageSize) || 2
  // 保存查询的空对象
  var where ={}
  // 模糊查询标题 接收标题
  var title =req.query.title
 // 如果传标题过来
  if(title){
   where.title = {
    // like :sql语法,%表示前后可以更其他文字
   [Op.like]:'%'+title+'%'

   }}
   // findAndCountAll返回总的记录数
  var result = await models.Article.findAndCountAll({
    order:[['id','DESC']],
    where:where,
    offset:(currentPage-1)*pageSize,
    limit:pageSize
  })

  res.json({
    articles:result.rows,
    pagination:{
      currentPage:currentPage,
      pageSize:pageSize,
      total:result.count
    }
  })
})


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是根据你的要求添加 Sequelize 连接 SQLite 文件数据库和简单的用户名密码登录逻辑相关接口的步骤: 1. 安装 SQLite 和 Sequelize: ``` npm install sqlite3 sequelize ``` 2. 在代码中引入 Sequelize 并创建一个实例: ```javascript const Sequelize = require('sequelize'); const sequelize = new Sequelize({ dialect: 'sqlite', storage: './database.sqlite' }); ``` 这里的 `storage` 参数指定了数据库文件的路径。 3. 定义用户模型: ```javascript const { Model, DataTypes } = require('sequelize'); class User extends Model {} User.init({ username: { type: DataTypes.STRING, allowNull: false }, password: { type: DataTypes.STRING, allowNull: false } }, { sequelize, modelName: 'user' }); ``` 这里的模型定义了用户名和密码两个字段。 4. 同步模型到数据库中: ```javascript await sequelize.sync(); ``` 5. 添加登录接口: ```javascript app.post('/login', async (req, res) => { const { username, password } = req.body; const user = await User.findOne({ where: { username, password } }); if (user) { res.send('登录成功'); } else { res.status(401).send('用户名或密码错误'); } }); ``` 这个接口接收一个 POST 请求,包含用户名和密码两个字段。然后在数据库中查找是否存在这个用户,如果存在则返回登录成功,否则返回用户名或密码错误。 6. 添加注册接口: ```javascript app.post('/register', async (req, res) => { const { username, password } = req.body; const user = await User.findOne({ where: { username } }); if (user) { res.status(409).send('用户名已存在'); } else { await User.create({ username, password }); res.send('注册成功'); } }); ``` 这个接口接收一个 POST 请求,包含用户名和密码两个字段。首先在数据库中查找是否存在这个用户,如果存在则返回用户名已存在,否则创建一个新用户,并返回注册成功。 这些就是添加 Sequelize 连接 SQLite 文件数据库和简单的用户名密码登录逻辑相关接口的步骤。当然,这只是一个简单的示例,实际应用中还需要进行更多的安全性和错误处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸥总

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值