express-generator 应用程序生成器
1、安装 mongoose npm i mongoose@6.11.2
2、启动 mogodb 服务:文件路径下执行 cmd(输入 mongod)
3、连接 mongodb 数据库
一、创建 config 文件
// 配置文件
module.exports = {
DBHOST: '127.0.0.1',
DBPORT: 27017,
DBNAME: 'mydata',
}
二、创建 db 文件
// success 数据库连接成功的回调
// error 数据库连接失败的回调
module.exports = function (success, error) {
// 判断 error 为其设置默认值
if (typeof error !== 'function') {
error = () => {
console.log('连接失败...')
}
}
// 1、安装 mongoose
// 2、导入 mongoose
const mongoose = require('mongoose')
// 导入配置文件
const { DBHOST, DBPORT, DBNAME } = require('../config/config')
// 如果连接成功后出现 strictQuery 的警告,设置 strictQuery 为 true 即可,均无任何影响。
mongoose.set('strictQuery', true);
// 3、连接 mongodb 服务 数据库的名称
mongoose.connect(`mongodb://${DBHOST}:${DBPORT}/${DBNAME}`);
// 4、设置回调
// 设置连接成功的回调 官方推荐 once 事件回调函数只执行一次,on会自动重连。
mongoose.connection.once('open', () => {
success();
});
// 设置连接错误的回调
mongoose.connection.on('error', () => {
error();
});
// 关闭数据库连接 (项目运行过程中,不会添加该代码)
mongoose.connection.on('close', () => {
console.log('连接关闭');
});
}
三、创建接口文档模型
// 导入 mongoose
const mongoose = require('mongoose');
// 创建文档的结构对象
// 设置集合中文档的属性以及属性值的类型
let AuthSchema = new mongoose.Schema({
username: {
type: String,
required: true
},
password: {
type: Number,
required: true
}
})
// 创建模型对象 对文档操作的封装对象 mongoose 会使用集合名称的复数,创建集合(如:book将成为books)
let AuthModel = mongoose.model('auth', AuthSchema);
// 暴露模型对象
module.exports = AuthModel;
四、创建 api 路由文件
const { render } = require('ejs');
var express = require('express');
var router = express.Router();
// 导入 moment
const AuthModel = require('../../models/authModel');
/* 记账本列表 */
router.post('/auth', function (req, res, next) {
// 插入数据库
AuthModel.create({
...req.body,
}, (err, data) => {
if (err) {
console.log('err----',err)
res.json({
// 响应编号
code: '1002',
// 响应的信息
msg: '创建失败~~',
// 响应的数据
data: data
})
return;
}
res.json({
// 响应编号
code: '0000',
// 响应的信息
msg: '添加成功',
// 响应的数据
data: data
})
})
});
module.exports = router;
五、修改 app.js 文件
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var authRouter = require('./routes/api/auth');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/api', authRouter);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
next(createError(404));
});
// error handler
app.use(function (err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
六、Apifox 测试接口