一.node.js连接mongo数据库

  1. yarn init -y 生成package.json

修改package.json

  1. "scripts": {
  2. "start": "nodemon index.js" 监听
  3. }

二.安装mongoose

  1. yarn add mongoose

三,导入mongoose,连接数据库

  1. const mongoose=require('mongoose')
  2. mongoose.connect( 'mongodb://127.0.0.1:27017/student', {useNewUrlParser: true});

四.定义Schema和数据库中的表映射

  1. var AdminSchema =new mongoose.Schema({
  2. name:String,
  3. age:Number
  4. })

五.创建模型映射表

  1. var AdminModel = mongoose.model('Admin',AdminSchema,'admin')

六。查询数据

  1. //抛出错误
  2. AdminModel.find((err,data)=>{
  3. if(err) throw err;
  4. else console.log(data)
  5. })
  6. AdminModel.find({}).then(data=>{
  7. console.log(data)
  8. })

第二章 node.js连接数据库 - 图1

七.拆分models

新建models文件夹,在里面新建db.js和admin.js

//models/db.js
  1. const mongoose=require('mongoose')
  2. mongoose.connect( 'mongodb://127.0.0.1:27017/student', {useNewUrlParser: true},(err)=>{
  3. if(err){throw err};
  4. console.log("数据库连接成功")
  5. });
  6. module.exports=mongoose;

//models/admin.js
  1. const mongoose = require('./db')
  2. var AdminSchema =new mongoose.Schema({
  3. name:String,
  4. age:Number
  5. })
  6. var Admin= mongoose.model('Admin',AdminSchema,'admin')
  7. module.exports=Admin;

八.跨域

  1. yarn add koa koa2-cors
  2. const cors=require('koa2-cors')
  3. app.use(cors())

九.art-template

新建views文件夹,在新建index.html文件

一个界面一个路由,添加一个admin/top界面
  1. yarn add art-template koa-art-template
  2. //1.导入
  3. const render = require("koa-art-template");
  4. //2.配置
  5. render(app, {
  6. root: path.join(__dirname, 'views'),
  7. extname: '.html', //后缀也可以写成.art
  8. debug: process.env.NODE_ENV !== 'production'
  9. });
  10. //3.使用
  11. router.get('/admin/top',async ctx=>{
  12. await ctx.render('index')
  13. })

view/index.html
  1. <body>
  2. <h2>后台管理界面</h2>
  3. </body>

添加数据库表格

view/index.html

  1. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" >
  2. <body>
  3. <h2>后台管理界面</h2>
  4. <table class="table table-hover">
  5. <thead>
  6. <tr>
  7. <th>编号</th>
  8. <th>姓名</th>
  9. <th>年龄</th>
  10. <th>操作</th>
  11. </tr>
  12. </thead>
  13. <tbody>
  14. {{each data}}
  15. <tr>
  16. <td>{{$index}}</td>
  17. <td>{{$value.name}}</td>
  18. <td>{{$value.age}}</td>
  19. <td>
  20. <a href="/delete?id={{@ $value._id}}" class="btn btn-danger">删除</a>
  21. <a href="#" class="btn btn-success">编辑</a>
  22. </td>
  23. </tr>
  24. {{/each}}
  25. </tbody>
  26. </table>
  27. </body>

index.js

  1. router.get('/admin/top',async ctx=>{
  2. var data=await AdminModel.find();
  3. await ctx.render('index',{data})
  4. })
  5. router.get('/delete',async ctx=>{
  6. var {id}=ctx.query;
  7. await AdminModel.remove({_id:id})
  8. ctx.redirect('/admin/top')
  9. /* var id=await AdminModel.remove({id}) */
  10. /* ctx.body={id} */
  11. })