Schema —— 一種以文件形式存儲的數據庫模型骨架,沒法直接通往數據庫端,也就是說它不具有對數據庫的操做能力,僅僅只是數據庫模型在程序片斷中的一種表現,能夠說是數據屬性模型(傳統意義的表結構),又或着是「集合」的模型骨架。javascript
那如何去定義一個Schema呢,請看示例:java
var mongoose = require("mongoose"); var TestSchema = new mongoose.Schema({ name : { type:String },//屬性name,類型爲String age : { type:Number, default:0 },//屬性age,類型爲Number,默認爲0 time : { type:Date, default:Date.now }, email: { type:String,default:''} });
注:基本屬性類型有:字符串、日期型、數值型、布爾型(Boolean)、null、數組、內嵌文檔等。mongodb
Model —— 由Schema構造生成的模型,除了Schema定義的數據庫骨架之外,還具備數據庫操做的行爲,相似於管理數據庫屬性、行爲的類。數據庫
如何經過Schema來建立Model呢,以下示例:數組
var db = mongoose.connect("mongodb://127.0.0.1:27017/test"); // 建立Model var TestModel = db.model("test1", TestSchema);
test1:數據庫中的集合名稱,當咱們對其添加數據時若是test1已經存在,則會保存到其目錄下,若是未存在,則會建立test1集合,而後在保存數據。mongoose
擁有了Model,咱們也就擁有了操做數據庫的金鑰匙,在後面的課程中,咱們就會學習使用Model來進行增刪改查的具體操做,因此,必定要熟悉他的建立格式喲!學習
若是你想對某個集合有所做爲,那就交給Model模型來處理吧,建立一個Model模型,咱們須要指定:1.集合名稱,2.集合的Schema結構對象,知足這兩個條件,咱們就會擁有一個操做數據庫的金鑰匙。ui
Entity —— 由Model建立的實體,使用save方法保存數據,Model和Entity都有能影響數據庫的操做,但Model比Entity更具操做性。spa
使用Model建立Entity,以下示例:對象
var TestEntity = new TestModel({ name : "Lenka", age : 36, email: "lenka@qq.com" }); console.log(TestEntity.name); // Lenka console.log(TestEntity.age); // 36
注:建立成功以後,Schema屬性就變成了Model和Entity的公共屬性了。
基於前面的課程,接下來咱們就開始學習對數據的具體操做了,下面是關於一些基礎數據的定義,相信對於你來講已經不陌生了,請再仔細溫習一遍吧!
var mongoose = require("mongoose"); var db = mongoose.connect("mongodb://127.0.0.1:27017/test"); var TestSchema = new mongoose.Schema({ name : { type:String }, age : { type:Number, default:0 }, email: { type:String }, time : { type:Date, default:Date.now } }); var TestModel = db.model("test1", TestSchema ); var TestEntity = new TestModel({ name : "helloworld", age : 28, email: "helloworld@qq.com" }); TestEntity.save(function(error,doc){ if(error){ console.log("error :" + error); }else{ console.log(doc); } });
注:爲了方便後面課程的學習和提升學習效率,如下基礎數據均和後面課程緊密相連,因此必須按照如下結構方式來定義,請勿修改(默認數據庫爲test,集合爲test1)
總結:
1. Schema:數據庫集合的模型骨架,或者是數據屬性模型傳統意義的表結構。
2. Model :經過Schema構造而成,除了具備Schema定義的數據庫骨架之外,還能夠具體的操做數據庫。
3. Entity:經過Model建立的實體,它也能夠操做數據庫。