前后端项目不分离(中-2)

1.下载mongoose模块

2.在项目中创建数据库操作模块:sql(文件夹)/db.js(连接数据库) + pro.js(创建集合) + sql.js(数据库增删改查的封装)

3.创建集合之前,先设计集合结构(pro.js)

4.将集合模块暴露,准备实现数据的操作

5.在数据库操作的pro.js 引入数据库的连接模块 ,创建集合,集合中写入设计的模板,暴露模块

6.数据在路由文件pro.js中插入,所以刚刚数据库操作模块都要引入,我做的是商品插入,所以每一个要有唯一的id与之对应,我这里用了下载了node-uuid工具,使用uuid.v1()生成唯一的id,后面操作商品用的到,在这个商品信息的路由中, 每次请求时先获取所有数据,然后再讲数据传给页面模板渲染

7.数据先是用form表单发送给后端,后端post接收后,经过数据类型处理存入数据库,存完之后,第一篇说过,新数据插入了,要路由重定向等于刷新了页面,把新的数据显示出来。

8.数据自己一条条插效率太低了,这里用了别人封装好的一个工具,可以插入execl的表格,需要简单的一些处理,下载工具node-xlsx ,下载完之后在pro路由中建立子路由,pro的页面模板创建a标签,a标签跳转的地址就是子路由的地址,路由pro设置子路由,进行数据处理,需要用到xlsx.parse()解析数据:
xlsx.parse(__dirname + “/…/excel/pro.xlsx”)

9.dirname 是当前文件的绝对路径后面进行操作找到表格,表格数据还是需要解析的,具体要根据这个数据的格式。可以用res的send发过去看一下再决定操作,拿一个空数组,for循环遍历刚刚解析的数据利用数组的方法添加进去,然后添加到已经创建集合且暴露的pro.js中,添加完记得路由的重定向,在页面模板记得解析这些数据,下面放相关代码
db.js

const mongoose = require("mongoose");

mongoose.connect('mongodb://127.0.0.1:27017/wys',{
    useNewUrlParser: true,
    useUnifiedTopology: true
}); 

mongoose.connection.on("connected",()=>{ 
    console.log("连接成功")
})

mongoose.connection.on("disconnected",()=>{
    console.log("连接断开")
})

mongoose.connection.on("error",()=>{
    console.log("连接错误")
})
module.exports = mongoose;

pro.js

const mongoose = require("./db");

// 创建集合对象
const proSchema = new mongoose.Schema({
    proId:{type:String},
    brand:{type:String},
    logo:{type:String},
    kind:{type:String},
    img:{type:String},
    wname:{type:String},
    price:{type:Number},
    sell:{type:Number},
    rest:{type:Number},
    discount:{type:Number},
    point:{type:Number}
})

module.exports = mongoose.model("pros", proSchema);

pro.ejs






  
  
  AdminLTE 2 | Starter
  
  
  


  
  

  
  
  
  
  
  

  




  
<%- include("./header.ejs") %> <%- include("./aside.ejs") %>

商品信息管理

商品信息展示区域

<% for(var i=0;i <% } %>
序号 品牌 LOGO 分类 图片 名称 价格 销量 库存 折扣 评分 操作
<%= i+1 %> <%= data[i].brand %> <%= data[i].kind %> <%= data[i].wname %> <%= data[i].price %> <%= data[i].sell %> <%= data[i].rest %> <%= data[i].discount %> <%= data[i].point %>
Showing 1 to 10 of 57 entries
<%- include("./footer.ejs") %>

sql.js前一篇有我就不放了(调了一下午的bug就是没想过自己封装出了问题,漏了个参数,唉)
解析数据,要根据样式操作哦用send发前端看一下先就这样吧。
一键三连一键三连

你可能感兴趣的:(mangodb,数据库)