nodejs(koa框架)如何利用mysql向数据库插入一条记录后返回该记录的key

今天做毕设遇到这么一个问题:
向数据库的表中插入一条记录,然后需要返回这条记录的键(key),通过网上找的许多方法是插入一条记录后再次使用sql语句去查表:

// 方法1
insert into x1 values ('X2', 'x3', 'x4');
select @@IDENTIFY;
// 方法2
insert into x1 values ('X2', 'x3', 'x4');
select LAST_INSERT_ID();

还有一些方法是通过查询表中的max(key)实现的,但是这样就相当于对表格多进行了一次查询操作,有些麻烦;

正文

我使用的是nodejs的koa框架,搭配的是MySQL数据库,通过编写一个操作数据库的工具类函数,返回每次成功操作数据库后得到的数据:

// 文件名:db.js
// 引入数据库 
var mysql = require("mysql")

// 创建数据库连接池
var pool = mysql.createPool({
    host: 'localhost', // 连接的服务器
    port: 3306, // mysql服务运行端口
    database: 'project', // 选择的数据库
    user: 'root', // 用户名
    password: 'xxx.' // 用户密码
})

// 对数据库进行增删改查的基本操作
function query(sql, callback) {
    pool.getConnection(function (err, connection) {
        connection.query(sql, function (err, rows) {
            callback(err, rows)
            connection.release() // 中断连接
        })
    })
}

exports.query = query

然后在需要使用的地方引入该函数

const Router = require("koa-router")
const person = new Router()
const db = require("db.js文件的路径")

person.post('/address/add', async (ctx, next) => {
	// 接收来自前端的参数
    let { user_id, customer, address, customer_phone } = ctx.request.body
    // sql语句,向shopaddress表中插入记录
    let insertAddressSql = `insert into shopaddress (user_id, customer, address, customer_phone) values ('${user_id}', '${customer}', '${address}', '${customer_phone}')`;
    let result = await new Promise((resolve, reject) => {
        return db.query(insertAddressSql, (err, data) => {
            if (err) throw err;
            // 将成功信息以及得到的数据data一起返回给前端
            let obj = {
                msg: '成功插入一条收获地址!',
                data:data // 这个data中就含有许多的属性,有兴趣的小伙伴可以打印出来看看,里面的insertId就是新插入的记录的key
            }
            resolve(obj)
        })
    })
    ctx.body = result
})

前端的代码:

wx.request({
	url: 'http://127.0.0.1:5000/person/address/add',
	method: "POST",
	data: {
		user_id: 'xxx',
        customer: 'xxx',
        address: 'xxx',
        customer_phone: 'xxx'
	},
	header: { // 设置请求的 header
		'content-type': 'application/json'
	},
	success: res => {
        console.log(res.data.data.insertId) // 这样前端就可以拿到新插入的记录的key了 
	}
})
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值