• 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
    最后我们来实现数据库的增删改查,以及开发后端的逻辑
     
     
  • 相关阅读:
    力扣3. 无重复字符的最长子串
    力扣724. 寻找数组的中心索引
    力扣105. 从前序与中序遍历序列构造二叉树
    力扣541. 反转字符串 II
    力扣496. 下一个更大元素 I
    力扣129. 求根到叶子节点数字之和
    力扣628. 三个数的最大乘积
    力扣415. 字符串相加
    力扣409. 最长回文串
    力扣404. 左叶子之和
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9339497.html
Copyright © 2020-2023  润新知