Node.JS服务器搭建的完整流程(依赖express脚手架)
1、进入工程文件夹,创建主服务器以及下载依赖
2、创建代理服务器以及下载依赖(下文讲到)
3、然后开始主服务器的创建
4、先拉出三层架构,Dao,service文件夹的创建 (工程化管理和维护代码更方便)
5、Dao里面创建db.js,以及xxDao.js,链接数据库
6、然后创建models文件夹,创建xxModels.js文件
7、安装mongoose模块,用来操作数据库
npm install -g express-generator //搭建express脚手架
express --view=pug myapp //创建一个项目名字叫做myapp
npm install //安装第三方依赖包(可以简写为npm i)
npm start //启动服务 (也可以进入bin目录启动www文件)
npm i mongoose //下载mongoose用来操作MongoDB数据库
8、然后开始链接数据库,第一步是编写db.js连接MongoDB数据库
const mongoose = require("mongoose");
//链接数据库中名为myData的文档对象
mongoose.connect("mongodb://localhost/Mydata", {
useNewUrlParser: true,
useUnifiedTopology: true
});
//设置监听函数,数据库链接成功后做出对应/的打印
mongoose.connection.on("connected",function(){
console.log("成功连上classmates数据库");
})
require("./models/clazzModel");
//dao/models/clazzModel.js
const mongoose = require("mongoose");
const clazzsSchema = new mongoose.Schema({
teacherName: String,
className:String,
addr: String,
}, {
versionKey: false
});
const clazzsModel = mongoose.model("clazzs", clazzsSchema, "clazzs");
module.exports = clazzsModel;
并且还需要在app.js中引入db.js
require("./Dao/db");
9、然后开始定义文档骨架,开始写xxModels.js里面的代码
const mongoose = require("mongoose");
const clazzSchema = mongoose.Schema({ //创建骨架,定义数据库文档结构
name: String,
age: Number,
},{
versionKey:false
});
const clazzModel = mongoose.model("clazz",clazzSchema,"clazz");
module.exports = clazzModel;//最后导出clazzModel,因为Dao层代码需要使用来操作数据库
10、Dao层逻辑主要代码的编写
const mongoose = require("mongoose");
const clazzModel = mongoose.model("clazz");
const getClazz = async function (){
return await clazzModel.find();//用clazzModel直接操作数据库,拿到数据库中的clazz集合中的数据;
}
module.exports = {getClazz};//最后导出getClazz方法供给service层的代码调用
11、service层代码的编写
const clazzDao = require("../Dao/clazzDao");
const getClazz = async function(){
return await clazzDao.getClazz();
}
modue.exports = {getClazz};
下面是服务分三层架构之前的代码
var express = require('express');//前两步骤就是引入脚手架和路由,固定格式
var router = express.Router();
const mongoose = require("mongoose");//引入第三方mongoose模块
const teacherSchema = mongoose.Schema({//创建骨架约束数据库数据结构
username: String,
password: String
}, {
versionKey: false
});
//然后引入model来操作数据库
const teacherModel = mongoose.model("teachers", teacherSchema, "teachers")
mongoose.connect("mongodb://localhost/myData",{//链接数据库中的myData
useNewUrlParser: true,
useUnifiedTopology: true
});
mongoose.connection.on("connected", function () {//设置监听,判断链接是否成功
console.log("teachers 链接成功");
});
/* GET teachers listing. */
router.post('/login', async function (req, res, next) {
const teacher = req.body;//登录系统,拿着用户输入的信息去数据库对比
const data = await teacherModel.find(teacher);
if (data.length){//如果匹配到的数据不为空,说明登陆成功
res.send(true);
}
else{//匹配到的数据为空,说明数据库没有该用户,判定为登陆失败
res.send(false);
}
});
//下面是注册,只需判断该用户名是否已经存在
router.post('/regist', async function (req, res, next) {
const teacher = req.body;
const data = await teacherModel.find({username:teacher.username});
if (data.length){//如果在数据库中找到了该用户名,则说明已经失败,注册不合法
res.send(false);
}
else{//如果注册合法,则在数据库中创建该用户,返回注册成功
await teacherModel.create(teacher);
res.send(true);
}
});
module.exports = router;