node.js从数据库获取数据返回到sever端

下面用建立博客的方式,获取后台博客列表的信息的代码解释:

 

这是appp.js中的内容。是基本的功能层:

const headleBlogRouter = require("./src/router/blog");
const headleUserRouter = require("./src/router/user");
const querystring = require("querystring");


//用于处理post Data    、、异步
const getPostData = (req)=>{
    const promise = new Promise((resolve,reject)=>{
        if(req.method !== "POST"){
            resolve({});
            return
        }
        if(req.headers["content-type"] !== 'application/json'){
            resolve({});
            return
        }
        let postData ="";         
        req.on("data", chunk =>{
            postData += chunk.toString()             //记录客户端上传的数据
        })
        req.on("end", ()=>{               //客户端上传结束
        //返回客户上传数据内容
           if(!postData){
               resolve({});
               return;
           }
           resolve(
               JSON.parse(postData)
           )
        })
    })
    return promise;
}

const  serverHandle = (req,res) =>{
    //设置返回格式
    res.setHeader("content-type", "application/json");

    //获取PATH;

    const url = req.url;
    req.path = url.split('?')[0];

    //解析query
    req.query = querystring.parse(url.split("?")[1]);
    
    
    //处理post Data
    getPostData(req).then(postData => {
    req.body = postData;

    //处理blog路由;
    const blogResult = headleBlogRouter(req,res);
    if(blogResult){
        blogResult.then(blogData =>{
            res.end(
                JSON.stringify(blogData)
            )
        })
        return
    }

    res.writeHead(404,{"Content-type":"text/plain"});
    res.write("404 Not Found\n");
    res.end();
    })
    
   
}

module.exports = serverHandle;

 这是路由处理层:

const {getList,} = require("../controller/blog");
const {SuccessModel ,ErrorModel} = require("../model/resModel");
const headleBlogRouter = (req,res)=>{
    const method = req.method;
    const id= req.query.id;

    //获取博客列表
    if(method === "GET" && req.path === "/api/blog/list"){
        const author = req.query.author || "";
        const  keyword = req.query.keyword ||"";
        // const listData = getList(author,keyword);
        // return new SuccessModel(listData);
        const result = getList(author,keyword);
        return result.then(listData =>{
            return new SuccessModel(listData);
        })

    }
}
module.exports = headleBlogRouter;

 

这是数据处理层:

const { exec} = require('../db/mysql');


//获取博客列表
const getList = (author, keyword)=>{
    let sql = `select * from blogs where 1=1 `;
    if(author){
        sql += `and author = '${author}' `;
    }
    if(keyword){
        sql += `and title like '%${keyword}%' `;
    }
    sql += `order by createtime desc;`;
    //返回的是一个promise
    return exec(sql);
}
module.exports ={
    getList
}

这是链接数据库层

const mysql = require('mysql');
const{ MYSQL_CONF } = require('../conf/db');

//创建连接对象
const con =mysql.createConnection(MYSQL_CONF);

//开始连接
con.connect();

//统一执行sql的函数
function exec(sql){
    const promise = new Promise((resolve, reject)=>{
        con.query(sql,(err, result) =>{
            if(err){
                reject(err);
                return;
            }
            resolve(result);
        })
    })
    return promise;
}

module.exports = {
    exec
}

 这是数据库环境配置层:

const env = process.env.NODE_ENV  //环境参数、环境变量;

//配置
let MYSQL_CONF;

if(env === 'dev'){
    MYSQL_CONF = {
        host: "localhost",
        user: 'root',
        password: "这里是你自己的密码",
        port: '3306',
        database: 'myblog'
    }
}
module.exports = {
    MYSQL_CONF
}

本地运行一下:

等我有时间了回来加详细的注释

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值