MongoDB

MongoDB

​ MongoDB非关系型数据库 默认端口号为27017

sequelize 用于关系型数据库 例如:mysql

  • sudo mongod启动服务

  • mongo 用来操作 相当于git bash

  • show dbs 查看所有数据库

  • MongoDB中默认的数据库为test,如果你没有创建新的数据库,集合将存放在test数据库中

  • 插入文档

  • db.insert({
        name:'菜鸟教程',
        age :18
    })
    
express 连接 mongodb

npm i mongoose -S

​ 新建文件 db.js

app.js里连接require('./db.js')

​ schema定义文档数据结构

​ 新建models文件 User.js(直接导出models实例就小写)

module.exports = new model('user',userschema)
  • user视图通过routes下的users渲染
const usermoudle = require("../modules/users")
  • user.save()保存到数据库中

  • 查所有

const users = UserModel.find({})
//UserModel.find({age:{$gte:24}})大于等于
.then(resp=>{//返回前端
    res.json(resp)
})
.catch(()=>{//错误返回的代码
    res.json({
        
    })
})
  • 改数据

Edit document

  • 返回视图

res.render('userlist')

让接收的数据以列表的形式显示
  • 在routes的users.js中传入一个对象
.then(resp=>{
    res.render('userlist',{users:resp})
})
  • userlist.ejs
<ul>
    <%users.forEach(function(user){%>
    	<li>
    	<span><%=user.name%></span>
        <span><%user.age%></span>
         </li>
<%});%>

ejs

  • <%= 输出数据到模板

  • <%- 输出非转义的数据到模板

  • include 将相对于模板路径中的模板片段包含进来

mongoose

Mongoose的一切都基于Schema

  • 查询 Tank.find({size:‘small’});
  • 删除 Tank.remove();
  • 可以通过mongoose.connect()方法连接MongoDb
var mongoose = require('mongoose'),
    DB_URL = 'mongodb://localhost:27017/test';
mongoose.connect(DB_URL);
  • connection是mongoose模块的默认引用,返回一个connection对象

    var db = mongoose.connection;//获取connection实例
    //使用Connetion监听连接状态
    db.on('connected',function(err){
        if(err){
            console.log('连接数据库失败:'+err);
        }else{
            console.log('连接数据库成功!');
        }
    });
    
    • schema

      schema可以理解为mongoose对表结构的定义(不仅仅可以定义文档的结构和属性,还可以定义文档的实例方法、静态模型方法、复合索引等),每个schema会映射到mongodb中的一个collection,schema不具备操作数据库的能力

      var studentsSechma=new mongoose.Schema({
          name:String,
          age:Number
      })
      
      • 实例方法
        实例方法就是给model的实例使用的方法,在Schema上使用methods定义
      var mongoose=require("mongoose");
      mongoose.connect("mongodb://localhost/test");
      var animalSchema=new mongoose.Schema({
          name:String,
          type:String
      });
      //Schema定义的方法,model的实例就可以直接使用
      animalSchema.methods.findSimilarType=function (cb) {
          //那个实例调用的,这个this就指向谁
          this.model("Animal").find({type:this.type},cb)
      }
      var Animal=mongoose.model("Animal",animalSchema);
      
      var dog=new Animal({
          name:"小狗",
          type:"dog"
      });
      
      dog.save();
      
      dog.findSimilarType(function (err,result) {
          console.log(result);
      })
      
      • 静态方法
        静态方法是给model使用的,在Schema上使用statics定义
      var mongoose=require("mongoose");
      mongoose.connect("mongodb://localhost/test");
      var animalSchema=new mongoose.Schema({
          name:String,
          type:String
      });
      //Schema定义的静态方法
      animalSchema.statics.findSimilarType=function (type,cb) {
          //这里的this指的是model
         this.find({type:type},cb)
      }
      var Animal=mongoose.model("Animal",animalSchema);
      
      var dog=new Animal({
          name:"小狗",
          type:"dog"
      });
      Animal.findSimilarType("dog",function (err,result) {
          console.log(result);
      })
      
      • Model

        定义好了Schema,接下就是生成Model。
        model是由schema生成的模型,可以对数据库的操作

        var mongoose=require("mongoose");
        mongoose.connect("mongodb://localhost/test");
        var animalSchema=new mongoose.Schema({
            name:String,
            type:String
        });
        var Animal=mongoose.model("Animal",animalSchema);
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值