【node】node创建服务器+mysql存储数据极简demo


前言

这是一个特别简单且特别容易理解的一个简易demo,可以让帮你打通前后端之间的壁垒,如果想读懂代码,可能需要一定的es6基础,node基础有没有都行。


提示:以下是本篇文章正文内容,下面案例可供参考

一、用node创建一个简易服务器

1.初始化项目

用vscode打开一个空白文件,并在中段运行如下命令来初始化配置

npm init -y

2.引入nodemon

nodemon可以在每次保存后自动重启服务,不用一直来手动关闭重启,使用也特别简单,以前通过node xxx.js来执行某个js文件,现在改为nodemon xxx.js来执行就可以了

npm i nodemon -g

3.创建服务器

新建一个www.js文件,将以下代码复制进去,然后在终端中输入nodemon www.js命令启动,然后打开浏览器,访问127.0.0.1:8888,页面显示hello world,至此一个简易服务器就搭建成功了。

const http = require("http");

// 端口号
const port = 8888;
// 主机地址
const host = "127.0.0.1";

const service = http.createServer((req, res) => {
  res.end("hello world");
});

service.listen(port, host, () => {
  console.log(`the server listening on ${host}...`);
});

4.createServer回调中的req和res

  • req是浏览器发送给服务器的信息,里边包含请求头,url,参数等等
  • res是服务器返回给浏览器的信息

二、node中使用mysql

1.引入mysql

npm i mysql -g

2.封装mysql文件

新建一个mysql.js文件,把以下代码复制进去,更多数据库操作可参考官方文档

const mysql = require("mysql");

const connection = mysql.createConnection({
  // 主机地址 (默认:localhost)
  host: "localhost",
  user: "root",
  password: "123456",
  // 数据库名
  database: "map",
});

connection.connect();

// 封装一个函数,返回mysql的操作结果
function executeSql(sql) {
  const promise = new Promise((resolve, resject) => {
    // 数据库操作
    connection.query(sql, (error, results) => {
      if (error) {
        return resject(error);
      }

      resolve(results);
    });
  });

  return promise;
}

module.exports = {
  executeSql,
};

3.在www.js中使用executeSql函数

稍微修改下www.js文件,返回数据库查询的结果

const http = require("http");
// 引入执行sql语句的函数
const { executeSql } = require("./mysql.js");

// 端口号
const port = 8888;
// 主机地址
const host = "127.0.0.1";

const service = http.createServer((req, res) => {
  if (req.method === "GET" && req.url === "/api/demo") {
    // 定义sql语句,查询map表中的所有数据
    let sql = `select * from map`;

    // executeSql返回的是promise
    executeSql(sql).then((result) => {
      // result就是map表中的所有数据
      res.end(JSON.stringify(result));
    });
  }
});

service.listen(port, host, () => {
  console.log(`the server listening on ${host}...`);
});

4.获取post请求中主体的数据

通过监听req的data和end事件来获取post请求的数据,可以通过postman来测试,页面上会显示你通过post请求发送给服务器的数据。

const http = require("http");
// 引入执行sql语句的函数
const { executeSql } = require("./mysql.js");

// 端口号
const port = 8888;
// 主机地址
const host = "127.0.0.1";

const service = http.createServer((req, res) => {
  if (req.method === "POST" && req.url === "/api/demo") {
    let postData = "";
    // 监听req,通过数据流的方式接收数据,chunk是二进制,需要转成字符串
    req.on("data", (chunk) => {
      postData += chunk.toString();
    });

    req.on("end", () => {
      // postData就是浏览器通过post请求传过来的数据
      res.end(JSON.stringify(postData));
    });
  }
});

service.listen(port, host, () => {
  console.log(`the server listening on ${host}...`);
});

三、跨域问题

如果出现跨域,在代码中给请求头中设置允许跨域,加上这行代码就行

const service = http.createServer((req, res) => {
  // 允许所有主机访问
  res.setHeader("Access-Control-Allow-Origin", "*");

  if (req.method === "GET" && req.url === "/api/demo") {
    // 定义sql语句,查询map表中的所有数据
    let sql = `select * from map`;

    // executeSql返回的是promise
    executeSql(sql).then((result) => {
      // result就是map表中的所有数据
      res.end(JSON.stringify(result));
    });
  }
});

总结

这个demo只是一个最最最最最简单的demo,帮助大家了解前后端分别都是怎么做的,以及node如何连接mysql等。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值