nodejs 学习日记2 —— get与post请求参数查询

5 篇文章 0 订阅
3 篇文章 0 订阅

之前用到了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;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值