「Node+Express快速構築サイト」学習ノート-5 mongodbモードモデル設計とコード

1953 ワード

3-1 mongodbモードモデル設計と符号化


ch 3-プロジェクトデータベース実装

データベース・モデルの設計


Schema-モード定義


フィールドタイプなどを定義できます

Model-モデルのコンパイル


入力されたパターンSchemaをコンパイルし,コンストラクタを生成する.

Documents-ドキュメントのインスタンス化


コンストラクション関数を呼び出すと、mongodbにデータが格納されます.

Documents-データベースクエリー


1.一括照会:find({})2.単一クエリー:findOne({_id:id})/特定のkey 3が入力されます.単一削除:remove({_id:id},callback)

ディレクトリ構造の調整

- imooc/
    -- node_modules/
    -- bower_components/
    -- views/
        --- *.jade
    -- models/
        --- movie.js
    -- schemas/
        --- movie.js
    -- app.js

データベース・モード・モデルのエンコーディング

  • モード-schemas/movie.js
  • var mongoose = require('mongoose');
    
    var MovieSchema = new mongoose.Schema({
        doctor: String,
        title: String,
        language: String,
        country: String,
        summary: String,
        flash: String,
        poster: String,
        year: Number,
        meta:{
            createAt: {
                type: Date,
                default: Date.now()
            },
            updateAt: {
                type: Date,
                default: Date.now()
            }
        }
    });
    
    MovieSchema.pre('save', function(next){ // save 
        if(this.isNew){
            this.meta.createAt = this.meta.updateAt = Date.now();
        }else{
            this.meta.updateAt = Date.now();
        }
    
        next();
    });
    
    MovieSchema.statics = {
        fetch: function(cb){
            return this
                .find({})
                .sort('meta.updateAt');
            exec(cb);
        },
        findById: function(id, cb){
            return this
                .findOne({_id: id});
            exec(cb);
        }
    }
    
    module.exports = MovieSchema;
    
  • モデル-models/movie.js
  • var mongoose = require('mongoose');
    var MovieSchema = require('../schemas/movie');
    var Movie = mongoose.model('Movie', MovieSchema);   //  -→  ( )
    
    module.exports = Movie;