node对MySQL的增删改查操作

node对MySQL的增删改查操作

近期因工作需要学习了一下使用node编写后端接口的相关知识,因需要频繁对数据库进行增删改查,所以记录一下,忘记了就来看一下

因为使用了模块化的编写思路,所以把路由和数据库单独进行了抽离,这里只记录对路由的处理函数,数据库的链接单独放在一个文件里,使用之前需要先引入:

const db = require('../db/index')

数据查询

查询所有

直接上代码

// @route POST api/profiles
// @desc  获取所有信息
exports.profilesAll = (req, res) => {
    const sql = 'select * from profile'
    db.query(sql, (err, results) => {
        if (err) return res.status(400).json(err)
        if (!results) return res.json({status: 400, message: '当前数据库无数据'})
        res.json(results)
    })
}

查询单条数据

// @route POST api/profiles/:id
// @desc  获取单个信息
exports.profilesId = (req, res) => {
    const sql = 'select * from profile where id = ?'
    db.query(sql, req.params.id, (err, results) => {
        if(err) return res.status(404).json(err)
        if(results.length !== 1) return res.status(400).json('查询错误,请输入正确的编号!')
        res.json(results[0])
    })
}

注意,这个id来自请求的参数

增加数据

// @route POST api/profiles/add
// @desc  创建信息接口
exports.profilesAdd = (req, res) => {
    const profileFields = {}
    if (req.body.type) profileFields.type = req.body.type
    if (req.body.describe) profileFields.describe = req.body.describe
    if (req.body.income) profileFields.income = req.body.income
    if (req.body.expend) profileFields.expend = req.body.expend
    if (req.body.cash) profileFields.cash = req.body.cash
    if (req.body.remark) profileFields.remark = req.body.remark

    const sql = 'insert into profile set ?'
    db.query(sql, profileFields, (err, results) => {
        if (err) return res.json(err)
        if (results.affectedRows !== 1) return res.status(400).json('写入数据失败')
        res.json(profileFields)
    })

}

注意这上面几个都是post请求,都在请求的body中

修改数据

// @route POST api/profiles/edit/:id
// @desc  编辑信息接口
exports.profilesEdit = (req, res) => {
    const profileFields = {}
    if (req.body.type) profileFields.type = req.body.type
    if (req.body.describe) profileFields.describe = req.body.describe
    if (req.body.income) profileFields.income = req.body.income
    if (req.body.expend) profileFields.expend = req.body.expend
    if (req.body.cash) profileFields.cash = req.body.cash
    if (req.body.remark) profileFields.remark = req.body.remark

    const sql = 'update profile set ? where id = ?'
    db.query(sql, [profileFields, req.params.id], (err, results) => {
        if (err) return res.json(err)
        if (results.affectedRows !== 1) return res.status(400).json('编辑失败!')
        res.json(profileFields)
    })

}

和增加数据比较像,不过也需要请求提供id

删除数据

// @route GET api/profiles/delete/:id
// @desc  删除信息接口
exports.profilesDelete = (req, res) => {
    const sql = 'delete from profile where id = ?'
    db.query(sql, req.params.id, (err, results) => {
        if (err) return res.status(404).json(err)
        if (results.affectedRows !== 1) return res.json('删除失败')
        res.json({
            status: 1,
            message: '删除成功!删除的数据编号为:' + req.params.id
        })
    })
}

删除最简单,不过建议不这么写,因为直接删除数据库文件是不推荐的,一般使用伪删除,实际上是增加一个字段,比如is_active,值为1时显示,值为0时代表已删除,删除时就改一下is_active的值就可以了,和修改数据接口一样操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

栀椩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值