在前端「切板」完成之後,我們當然不能滿足於畫面上的假資料,所以我們開始要準備讓我們的網站能存取真實的資料了。所以我們要開始引進資料庫來保存我們的資料了。我們的資料庫選擇是 MongoDB。
為什麼是 MongoDB呢?因為 MongoDB使用 JavaScript 的語法來存取資料,而不是 SQL 語法。例如
db.users.find()
db.users.insert()
這跟選擇 node.js 作我們的後端是一樣的,讓我們省下學習語言的時間。更重要的是,MongoDB 是一個 NoSQL的資料庫,可以用比較直覺的方式儲存資料,不像傳統的 SQL 資料庫,光是學習正規化與關聯資料就要一段時間。
如果你還沒有使用過,可以到 http://www.mongodb.org/downloads 下載並且安裝。
安裝好之後,接著我們在 node.js 這邊要安裝 Mongoose ,來作我們的 App 與 MongoDB 之間的橋樑。Mongoose 是一個在 node.js 上存取 MongoDB 的工具,讓你可以建立資料的 schema,幫助你對資料做 validation,還有其他方便的工具。
安裝 mongoose 是透過 npm
npm install mongoose --save
安裝好後,我們新增 /model/artwork.js 來寫我們作品資料的 schema
var mongoose = require( 'mongoose' )
, Schema = mongoose.Schema
, ObjectId = mongoose.Schema.Types.ObjectId
var schema = new Schema({
title : { type: String },
content : { type: String },
picture : { type: String },
updated_at: { type: Date, default: Date.now },
});
mongoose.model( 'Artwork', schema );
然後再新增一個 /model/index.js 來寫連線的指令並統一require 全部的 model
require('./artwork')
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/dribbble-clone');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
最後在 app.js 裡 require('./models')
做完這些事情後,就可以到一個 route 之中試試
Artwork
.find()
.exec(function(err, result){
console.log(result)
})
如果 result 有出現 [](空陣列),就代表我們成功了!