• mongodb模式模型设计及编码-Mongoose


    走到这一步,我们的网站还不能称为动态的网站,因为所要的数据都是伪造的,所以现在要对数据库的模型进行设计
     
    Mongoose
    我们用到的工具模块是Mongoose,他能对Mongodb进行建模的这样一个操作,在Mongoose里面有这样几个概念,分别是
    Schema: 模式,在模式里面我们对数据进行定义,定义字段对类型,比如是字符串类型,还是数字类型
    Model: 模型,编译模型,对传入对Schema进行编译,然后会生成构造函数
    Documents: 文档
    Schema-模式定义
    var mongoose = require('mogoose');
    var MovieSchema = new mongoose.Schema({
      doctor:String,
      title:String,
      language:String,
      country:String,
      year:Number,
      summary:String
    })
    Model-编译模型
    var mongoose = require('mongoose');
    var MovieSchema = require('./schemas/movie');
    var Movie = mongoose.model('Movie',MovieSchema)
    module.exports = Movie
    有了数据库模型以后,事情就变得好办了,现在对文档实例化,只需要调用模型,也就是这个构造函数,传入一条数据,然后再调用save方法,就可以把这条数据给传入到数据库里面去
    //Documents-文档实例化
    var Movie = require('./model/movie');
    var movie = new Movie({
      title:'机械战警',
      doctor:'何塞.帕迪利亚',
      year:2018
    })
    movie.save(function(err){
      if(err){
        return handleError(err);
      }
    })
    数据库的查询分成多种,查询批量的,单条的,或者指定条件的查询,那么批量查询只需要调用模型的find方法,传一个空对象就ok了
    //Documents - 数据库批量查询
    var Movie = require('./models/movie');
    app.get('/',function(req,res){
    Movie
      .find({})
      .exec(function(err,movies){
        res.render('index',{
          title:'imooc首页',
          movies:movies
        })
      })
    })
    单条的话,传入一个特定的key,比如Movie.findOne
    //Documents - 数据库单条查询
    var Movie = require('./models/movie');
    app.get('/',function(req,res){
      Movie
      .findOne({_id:id})
      .exec(function(err,movies){
        res.render('index',{
          title:'imooc首页',
          movies:movies
        })
      })
    })
    单条数据的删除,直接调用模型的remove方法,传入一个特定的key和value就可以了
    //Documents - 数据库单条删除
    var Movie = require('./models/movie');
    app.get('/',function(req,res){
      Movie
        .remove({_id:id},function(err,movie){
          if(err){
            console.log(err);
          }
        })
    })
    然后我们需要调整一下模式和模型,他们目录的层次
    nodeMongodb
      node_modules
      bower_components
      view
        index.jade
        detail.jade
        admin.jade
        list.jade
      models
        movie.js
      schemas
        movie.js
      app.js
    最后我们来实现数据库的增删改查,以及开发后端的逻辑
     
     
  • 相关阅读:
    矩阵快速幂模板
    Kuangbin带你飞 AC自动机
    Kuangbin 带你飞 KMP扩展KMP Manacher
    Kuangbin 带你飞 数位DP题解
    kuangbin 带你飞 数学基础
    Kuangbin 带你飞-基础计算几何专题 题解
    最大团问题
    头文件
    Codeforces 362E Petya and Pipes 费用流建图
    kuangbin带你飞 匹配问题 二分匹配 + 二分图多重匹配 + 二分图最大权匹配 + 一般图匹配带花树
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9339497.html
Copyright © 2020-2023  润新知