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的值就可以了,和修改数据接口一样操作

你可能感兴趣的:(web开发,算法,QT开发及web开发等学习笔记,mysql,node.js)