express创建api服务器(接口)及数据库操作
1.前期准备工作
-
npx express -e 项目名称
其他安装方式
$ npm i express-generator -g
$ cnpm i express-generator -g
$ yarn add express-generator global -
创建成功后会有一些目录文件夹,进入项目安装依赖 cnpm i
bin ( www 启动了一个静态服务器( web服务器 ))
node_modules 真个项目的依赖包
public 静态资源文件
routes 路由文件夹
view(xxx.ejs 项目的模板)
app.js 整个项目的入口文件package.json 整个项目的依赖配置文件
2.打造接口
-
项目环境搭建完成后,我们先找到routes文件夹,建一个port.js文件,先暴露接口文件(暴露port.js文件)然后找到app.js文件。
//先要暴露接口 const express = require('express'); const router = new express.Router(); module.exports = router;
然后在app.js文件里引入我们在routes里创建的port.js文件:
var portRouter = require('./routes/port');
继续在app.js文件里使用我们的这个文件:
app.use('/port',portRouter);
-
紧接着,我们在port.js文件中打造接口,还需要在views目录下新建一个port.ejs文件
const express = require('express'); const router = new express.Router(); router.get('/',( req,res,next ) => { res.render('port',{ ports: JSON.stringify( [ { id: 1, content: '敲代码' }, { id: 2, content: '打篮球' } ] ) }) }) module.exports = router;
-
前端请求这个接口的时候属于跨域请求,所以,需要一个应用级中间件(cors),我们可以在app.js文件中通过app.use 来使用这些中间件,中间件的分类:
$ cnpm i cors -S 来安装cors
在入口文件(app.js)中设置跨域的中间件
/找到app.js文件 var cors = require('cors') //引入cors模块之后,在终端用命令安装cors模块 //安装cors的命令 $ cnpm i cors -S app.use( cors ({ "origin": "*", "methods": "GET,HEAD,PUT,PATCH,POST,DELETE", "preflightContinue": false, "optionsSuccessStatus": 200 }) )
-
找到views目录中的port.ejs文件:
<%- ports %>
-
使用后端接口测试工具测试一下接口
//Insomnia后端接口测试工具测试的结果 [ { "id": 1, "content": "敲代码" }, { "id": 2, "content": "打篮球" } ]
3.连接数据库
-
cnpm i mongoose -D 安装mongoose
-
连接数据库
-
使用mongoose连接数据库的前提条件是:
1、mongo数据库已经运行。
2、已经安装了mongoose包
-
var mongoose = require("mongoose");
// 连接字符串格式为mongodb://主机/数据库名
mongoose.connect('mongodb://localhost/student);
// 连接本地mongodb ,本机的ip 127.0.0.1,端口:27017 数据库:student mongoose.connect("mongodb://127.0.0.1:27017/student",function(err){ if(!err){//如果连接成功,则打印出connected to Mongodb console.log("connected to Mongodb"); }else{ throw err;//如果连接失败,则抛出异常 } });
-
4.数据库的操作流程
存储数据步骤:定义Schema (骨架) > 创建model(模型)>Entity实例化方法。
注意:骨架不能操作数据库
通过模型来操作
1、定义骨架
mongoose有一个Schema的方法,得到一个Schema 的构造函数,通过new这个构造函数得到骨架
var Schema = mongoose.Schema;
//通过Schema创建一个骨架
var studentSchema = new Schema({
name: String,
age: String
});
2.创建模型
通过studentSchema 创建一个模型studentModel
var studentModel = mongoose.model("students",studentSchema );//创建模型
var instance1 = new studentModel (); //实例化模型得到实体
instance1.name="tangyan";
instance1.age="18";
//通过save方法保存
instance1.save(function(err){
if (err) {
console.log('保存失败');
return;
}
});
3.删除数据
思路:
1、删除数据首先要知道删除哪一条信息,需要知道信息的id.
2、把对应id的数据查询出来,执行remove方法
假如我们要删除id=”57e24521a755e1154039a403”的数据。
var id=”57e24521a755e1154039a403”;
studentQueryModel.findById(id,function(err,doc){
if(!doc){
return next(new NotFound("Doc not found"))
}else{
doc.remove(function(){
console.log('删除成功');
})
-
修改数据
修改数据的思路:先把对应id的数据查询出来,对需要修改的字段重新赋值,然后执行save方法保存。
假如我们要修改id=”57e24521a755e1154039a403”的数据。
var id=”57e24521a755e1154039a403”;
studentQueryModel.findById(id,function(err,doc){
//console.log(doc);
doc.name="xiaotangyan" ;//把name修改为xiaotangyan
doc.save(function(err){
if(!err){
console.log('修改成功');
}else{
throw err;
}
});
});
5.查询数据
下面find第一个参数{}里面为空,表示查询所有的数据:
docs表示查询的结果集合,可用于渲染ejs模板引擎。
studentQueryModel.find({},function(err,docs){
console.log(docs);
});