一、模块化之前的代码:
// 1.安装mongoose
// 2.导入mongoose
const mongoose = require("mongoose");
// 设置 strictQuery 为 true
mongoose.set("strictQuery", true);
// 3.连接mongodb服务
mongoose.connect("mongodb://127.0.0.1:27017/bilibili");
// 4.设置回调
// 设置连接成功的回调 once 一次 事件回调函数只执行一次
mongoose.connection.once("open", () => {
// 5.创建文档的结构对象
// 设置集合中文档的属性以及属性值的类型
let BookSchema = new mongoose.Schema({
name: String,
author: String,
price: Number,
});
// 6.创建模型对象 对文档操作的封装对象
let BookModel = mongoose.model("books", BookSchema);
// 7.新增
BookModel.create(
{
name: "西游记",
author: "吴承恩",
price: 19.9,
},
(err, data) => {
// 判断是否有错误
if (err) {
console.log(err);
return;
}
// 如果没有出错,则输出插入后的文档对象
console.log(data);
// 8.关闭数据库连接(项目运行过程中,不会添加该代码)
mongoose.disconnect();
}
);
});
二、模块化之后的代码:
┌─db mongoose连接相关代码
│ └─db.js
├─models model相关代码
│ └─BookModel.js
├─config 配置文件
│ └─config.js
└─index.js 程序的主文件
1.index.js----组装db模块和BookModel模块
//--------index.js--------
// 导入db文件
const db = require("./db/db");
// 导入mongoose
const mongoose = require("mongoose");
// 导入BookModel
const BookModel = require("./models/BookModel");
// 调用函数
db(() => {
// 7.新增
BookModel.create(
{
name: "西游记",
author: "吴承恩",
price: 19.9,
},
(err, data) => {
// 判断是否有错误
if (err) {
console.log(err);
return;
}
// 如果没有出错,则输出插入后的文档对象
console.log(data);
// 8.关闭数据库连接(项目运行过程中,不会添加该代码)
mongoose.disconnect;
}
);
});
2.db/db.js----封装mongoose连接相关的功能
//--------db.js--------
/**
*
* @param {*} success 数据库连接成功的回调
* @param {*} 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 为 true
mongoose.set("strictQuery", true);
// 3.连接mongodb服务
mongoose.connect(`mongodb://${DBHOST}:${DBPORT}/${DBNAME}`);
// 4.设置回调
// 设置连接成功的回调 once 一次 事件回调函数只执行一次
mongoose.connection.once("open", () => {
success();
});
// 设置连接错误的回调
mongoose.connection.on("error", () => {
console.log("连接失败");
error();
});
// 设置连接关闭的回调
mongoose.connection.on("close", () => {
console.log("连接关闭");
});
};
3.models/BookModel.js ---- 封装mongoose中的模型对象
//--------BookModel.js--------
// 导入mongoose
const mongoose = require("mongoose");
// 创建文档的结构对象
// 设置集合中文档的属性以及属性值的类型
let BookSchema = new mongoose.Schema({
name: String,
author: String,
price: Number,
});
// 创建模型对象 对文档操作的封装对象
let BookModel = mongoose.model("books", BookSchema);
module.exports = BookModel;
4.config/config.js ---- 抽取可变参数,组成配置文件
//--------config.js--------
// 配置文件
module.exports = {
DBHOST: "127.0.0.1",
DBPORT: "27017",
DBNAME: "bilibili",
};