Mongoose  教學

什麼是Mongoose?

Mongoose 是

                  一套給 Node.js 用的 MongoDB ODM,

 

            透過 mongoose 可以

                               用包裝過的、

                                   更高階的、

                                   更直覺的 API 語法,

                               以及

模擬 SQL 資料庫 schema-based 的方式,

                                        來操作 MongoDB 資料庫。

Schema

mongoose 的 Schema 概念就是用 schema-based 的方式,定義一個 collection 的組成結構。

 

Model

而 mongoose 的 Model 概念,則是對一個 collection 結構定義與操作方法的集合,也就是用 Schema 定義了一個 collection 的結構,加上其他對這個 collection 的驗證設定、操作方法等等,便構成了一個 Model。

而Mongoose有兩大特色:

為什麼 Schema-less 的資料庫需要 Schema-based?

NoSQL 的 MongoDB 本身就是 schema-less 的資料庫,結果用 mongoose 還要去刻意模擬成 schema-based,這樣的思路是什麼?

NoSQL 的 MongoDB 本身就是 schema-less 的資料庫,結果用 mongoose 還要去刻意模擬成 schema-based,這樣的思路是什麼?

其實這是對 NoSQL 的 schema-less 的誤解,schema-less 並不代表 no-schema。在應用當中還是需要一個 schema 來代表 model,而 schema-less 只是代表一種彈性的模式。

在Nodejs裡使用mongoose!!

var mongoose = require('mongoose');

導入mongoose模組

mongoose.connect('mongodb://localhost/MONGOOSETEST');

連結對應的資料庫:mongodb://localhost/MONGOOSETEST

var DB = mongoose.connection;

DB.on('error', console.error.bind(console, 'connection error:'));

DB.once('open', function callback () {

console.log("連線成功");

連線檢測

var USERSCHEMA = new mongoose.Schema({

        name:String,

        age:Number

});

設定Schema

var USERMODEL = db.model('USER',USERSCHEMA);

建立model

var USERENTITY = new USERMODEL({name:'Zack'});

USERENTITY.save(function(){console.log("save "+USERENTITY.name)});

新增資料

USERENTITY.findOne({'name':'David'}, function (err, docs) {

      console.log("搜尋資料並顯示年紀");

      console.log(docs.age);

});

搜尋資料

USERSCHEMA.methods.speak = function(){

     console.log("使用method");

     console.log('My name is '+this.name);

}

建立methods

須在"建立model"前

使用methods

USERENTITY.speak();

Made with Slides.com