mongoose代码模块化

 一、模块化之前的代码:

// 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",
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值