走到这一步,我们的网站还不能称为动态的网站,因为所要的数据都是伪造的,所以现在要对数据库的模型进行设计
 
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
最后我们来实现数据库的增删改查,以及开发后端的逻辑
 
 

mongodb模式模型设计及编码-Mongoose的更多相关文章

  1. H264帧内预测模式编号的编码过程

    1 本文词汇约定 宏块:H264编码基本单元,16x16像素(或采样)构成 块:   由8x8像素(或采样)构成的单位 子块:   由4x4像素(或采样)构成的单位 2 帧内亮度预测模式 H264规范 ...

  2. Mongodb相关 (Shell命令 / mongoose)

    Mongodb相关 1.创建一个文件夹作为数据库存放的目录 2.打开cmd cd到Mongodb/bin目录去 3.执行mongod --dbpath "第一项创建的文件夹(数据库数据存放目 ...

  3. MongoDB数据模型设计

    MongoDB的数据模式是一种灵活模式,其集合并不限制文档结构.这种灵活性让对象和数据库文档之间的映射变得很容易,即使数据记录之间有很大的变化,每个文档也可以很好的映射到各条不同的记录.但在实际使用中 ...

  4. 关系型数据库与Key-value型数据库Mongodb模式设计对比

    MongoDb 相比于传统的 SQL 关系型数据库,最大的不同在于它们的模式设计( Schema Design )上的差别,正是由于这一层次的差别衍生出其它各方面的不同. 我们可以简单的认为关系型数据 ...

  5. MongoDB学习day08--Mongoose索引、Mongoose内置方法、扩展Mongoose Model的静态方法和实例方法

    一.Mongoose索引 索引是对数据库表中一列或多列的值进行排序的一种结构, 可以让我们查询数据库变得更快. MongoDB 的索引几乎与传统的关系型数据库一模一样, 这其中也包括一些基本的查询优化 ...

  6. Mongodb学习(1)--- mongoose: Schema, Model, Entity

    Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由 Schema 发布生成的模型,具有抽象属性和行为的数据库操作 Entity : 由 Model 创建的 ...

  7. MongoDB 进阶模式设计

    原文链接:http://www.mongoing.com/mongodb-advanced-pattern-design 12月12日上午,TJ在开源中国的年终盛典会上分享了文档模型设计的进阶技巧,就 ...

  8. MongoDB 和 Mongoose 04

    一.安装 1. 相关 https://www.mongodb.org/dl/win32/ MongoDB的版本偶数版本为稳定版,奇数版本为开发版 MongoDB对于32位系统支持不佳,所以3.2版本以 ...

  9. Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录(二)

    用mogoose搭建restful测试接口 接着上一篇(Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录(一))记录,今天单独搭建一个restful测试接口,和项目前 ...

随机推荐

  1. LNMP V1.4正式版本安装及新增Let's Encrypt一键安装和其他功能

    军哥的LNMP一键安装包已经有一些年头了,着实给需要在Linux VPS.服务器中安装WEB环境的用户提供不小的帮助,而且每年儿童节都会有较大版本的更新和升级.老左在二月份的时候有体验过LNMP V1 ...

  2. Linux系统终端常用配置文件更改

    目录列表: 1.alias别名永久保存 2.解决vim文件没有颜色的问题 3.vim插件supertap插件安装(可支持自动补全,非函数代码补全,仅支持在当前编辑文档内补全) 4.vim插件管理 5. ...

  3. Ext.jsTree 向子节点添加叶子节点

    // 定义搜索节点树结构Store const nodeStore = Ext.create('Ext.data.TreeStore', { autoLoad : true, id : 'nodeSt ...

  4. 表单绑定 v-model

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. B9 Concurrent 重入锁(ReentrantLock)

    [概述] java.util.concurrent.locks.ReentrantLock 实现 java.util.concurrent.locks.Lock 接口,加锁(lock)和 解锁(unl ...

  6. Can you answer these queries III

    Can you answer these queries III 题目:洛谷 SPOJ [题目描述] 给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1.“0 x y”,把A[x]改 ...

  7. js — 基础知识

    目录 1. js的介绍 2. js的引入方式 3. js语句 4. 变量 js ( Javascript ) - 脚本语言 1. js的介绍 Javascript是一种运行在浏览器中的解释型的编程语言 ...

  8. Django中常用的那些模块路径

    Django中常用的那些模块路径 from django.shortcuts import HttpResponse, render, redirect from django import temp ...

  9. php底层变量存储

    变量存储 php的变量使用一个结构体 zval来保存的,在Zend/zend.h中我们可以看到zval的定义 struct _zval_struct { /* Variable information ...

  10. C#获取客户端Ip工具类

    string pcname = Dns.GetHostName(); string ip = Dns.GetHostAddresses(pcname).First().ToString(); usin ...