之前用到了node.js写查询数据库数据供前端展示,之前的查询语句不是根据前端传递过来的值进行查询的,显然在实际开发中需要根据前端传递的值进行查询,那么如何拿到前端的传递过来的值并按照这个值进行查询呢?
常见的请求有两种方式 :get与post,下面我们分情况讨论这两个请求该如何拿到前端缩传递的值。
get请求:
前端使用get请求向node后端传值时,我们可以通过callback函数中的req参数拿到所有关于请求的信息,而在req参数中query代表前端传递的值,例如下面这种情况:
我们可以看到前端通过get请求传递了一个参数id,它的值为2 ,而在node中,我们打印了req.query得到的结果为{ id: '2' },正是前端所传递的参数与值。
当我们拿到这个值后,我们就可以开始书写sql语句进行数据查询了,这里推荐使用es6中的模板字符串,所以我们的sql语句应该是`select * from users where id='${req.query.id}'`,注意这里需要为${req.query.id}这个变量加上引号,否则前端接口会报错。如果前端有多个参数传递,我们的sql语句可加上and连接多个条件。
post请求:
前端使用post请求向node后端传值时,我们可以通过callback函数中的req参数拿到所有关于请求的信息,而在req参数中body代表前端传递的值,例如下面这种情况:
前端通过post请求传递一个参数username,它的值为test1234,在node中我们打印下req.body,可以看到其结果为{ username: 'test1234' },与前端传递的参数一致。
那么我们的sql语句就应该是`select * from users where username='${req.body.username}'`,同理,如果有多个参数也可加上and连接多个条件。
以上就是node.js中get与post请求参数查询的所有内容了,附上源码:
前端:
<template>
<div class="home">
<div @click="search">click</div>
<div>{{ info }}</div>
<div @click="search2">click user List</div>
<div>{{ info2 }}</div>
<div @click="search3">click user List Detail</div>
<div>{{ info3 }}</div>
</div>
</template>
<script>
import { getUserInfo,getUserList,getUserListDetails } from "@/api/user"
export default {
name: 'Home',
data(){
return{
info:"",
info2:"",
info3:"",
}
},
methods: {
search() {
const result={
id:"2",
}
getUserInfo(result).then((res)=>{
console.log(res)
this.info = res.msg[0]
})
},
search2() {
const result={
username:"test1234"
}
getUserList(result).then((res)=>{
console.log(res)
this.info2 = res.data
})
},
search3(){
const result={
sex:"male",
likes:"sing",
}
getUserListDetails(result).then((res)=>{
console.log(res)
this.info3 = res.data
})
}
},
}
</script>
import request from "@/axios"
export const getUserInfo = (data={})=>{
return request.get("/users/usersInfo",data)
}
export const getUserList = (data={})=>{
return request.post("/users/usersList",data)
}
export const getUserListDetails = (data={})=>{
return request.get("/users/usersDetail",data)
}
后端:
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'marshall',
password : '123456',
port: '3306',
database: 'nodeBackend'
});
connection.connect();
router.get('/usersInfo', function(req, res, next) {
console.log(req.query)
const searchID = req.query.id
connection.query(`select * from users where id='${searchID}'`,function (err, result) {
res.json({
status:"200",
msg:result
});
// res.send('respond with a resource');
})
return;
});
router.post('/usersList', function(req, res, next) {
console.log(req.body)
console.log(req.body.username)
connection.query(`select * from users where username='${req.body.username}'`,function (err, result) {
if(err){
// res.send(err.message);
res.json({
status:"1",
msg:err.message
});
return;
}else{
// res.send(result);
res.json({
status:"0",
msg:"Success",
data:result,
});
}
});
// connection.end();
// res.send('respond with a resource');
});
router.get('/usersDetail', function(req, res, next) {
console.log(req.query)
const searchSex = req.query.sex
const searchLikes = req.query.likes
connection.query(`select * from users where sex='${searchSex}' and likes='${searchLikes}' `,function (err, result) {
res.json({
status:"200",
msg:"Success",
data:result
});
// res.send('respond with a resource');
})
return;
});
module.exports = router;