「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
データベース・モード・モデルのエンコーディング
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;
var mongoose = require('mongoose');
var MovieSchema = require('../schemas/movie');
var Movie = mongoose.model('Movie', MovieSchema); // -→ ( )
module.exports = Movie;