標籤:維護 tps model data create div pre option get
1190000008830333
前奏
Express 是什嗎?
Express 是一個基於 Node.js 平台的極簡、靈活的 web 應用開發架構,它提供一系列強大的特性,協助你建立各種 Web 和行動裝置應用。
全域安裝express腳手架
$ npm install express-generator -g
建立express項目
$ express myapp$ cd myapp$ npm install$ DEBUG=myapp npm start
MongoDB與Mongoose?
安裝MongoDB:
https://www.mongodb.com/download-center?jmp=nav
安裝Mongoose:
$ npm install mongoose --save
一、串連MongoDB
在項目根目錄下建立/lib/mongo.js
var mongoose = require("mongoose");var db = mongoose.connect(‘mongodb://localhost:27017/myblog‘);module.exports = db
要串連的資料庫為myblog
二、Schema
一種以檔案形式儲存的資料庫模型骨架,無法直接通往資料庫端,不具備對資料庫的操作能力,僅僅只是資料庫模型在程式片段中的一種表現,可以說是資料屬性模型(傳統意義的表結構),又或著是“集合”的模型骨架
建立一個使用者Schema
在項目根目錄下建立/models/users.js
var mongoose = require("mongoose");var db = require(‘../lib/mongo‘);//一個使用者模型var UserSchema = new mongoose.Schema({ username : { type:String }, password : {type: String}, avatar : {type: String}, age : { type:Number, default:0 }, description : { type: String}, email : { type: String }, github : { type: String }, time : { type:Date, default:Date.now }});//建立Modelvar UserModel = db.model("user", UserSchema );module.exports = UserModel
user:資料庫中的集合名稱,當我們對其添加資料時如果user已經存在,則會儲存到其目錄下,如果不存在,則會建立user集合,然後在儲存資料。
擁有了Model,我們也就擁有了操作資料庫的金鑰匙,就可以使用Model來進行增刪改查的具體操作。
Entity
由Model建立的實體,使用save方法儲存資料,Model和Entity都有能影響資料庫的操作,但Model比Entity更具操作性。
var UserEntity = new UserModel({ name : "hzzly", age : 21, email: "[email protected]", github: ‘https://github.com/hzzly‘});UserEntity.save(function(error,doc){ if(error){ console.log("error :" + error); }else{ console.log(doc); }});
三、封裝資料庫的CURD
var UserModel = require(‘../models/users‘);module.exports = { /** * 添加資料 * @param {[type]} data 需要儲存的資料對象 */ save(data) { return new Promise((resolve, reject) => { //model.create(儲存的對象,callback) UserModel.create(data, (error, doc) => { if(error){ reject(error) }else{ resolve(doc) } }) }) }, find(data={}, fields=null, options={}) { return new Promise((resolve, reject) => { //model.find(需要尋找的對象(如果為空白,則尋找到所有資料), 屬性過濾對象[選擇性參數], options[選擇性參數], callback) UserModel.find(data, fields, options, (error, doc) => { if(error){ reject(error) }else{ resolve(doc) } }) }) }, findOne(data) { return new Promise((resolve, reject) => { //model.findOne(需要尋找的對象,callback) UserModel.findOne(data, (error, doc) => { if(error){ reject(error) }else{ resolve(doc) } }) }) }, findById(data) { return new Promise((resolve, reject) => { //model.findById(需要尋找的id對象 ,callback) UserModel.findById(data, (error, doc) => { if(error){ reject(error) }else{ resolve(doc) } }) }) }, update(conditions, update) { return new Promise((resolve, reject) => { //model.update(查詢條件,更新對象,callback) UserModel.update(conditions, update, (error, doc) => { if(error){ reject(error) }else{ resolve(doc) } }) }) }, remove(conditions) { return new Promise((resolve, reject) => { //model.update(查詢條件,callback) UserModel.remove(conditions, (error, doc) => { if(error){ reject(error) }else{ resolve(doc) } }) }) }}
四、使用
在/routers/index.js中使用
var api = require(‘../lib/api‘);router.post(‘/login‘, function(req, res, next) { var user = { username : req.body.username, password: req.body.password }; api.findOne(user) .then(result => { console.log(result) })})router.post(‘/sign_up‘, function(req, res, next) { var user = { username : req.body.username, password: req.body.password, email: req.body.email }; api.save(user) .then(result => { console.log(result) })})router.get(‘/user_list‘, function(req, res, next) { //返回所有使用者 api.find({}) .then(result => { console.log(result) }) //返回只包含一個索引值name、age的所有記錄 api.find({},{name:1, age:1, _id:0}) .then(result => { console.log(result) }) //返回所有age大於18的資料 api.find({"age":{"$gt":18}}) .then(result => { console.log(result) }) //返回20條資料 api.find({},null,{limit:20}) .then(result => { console.log(result) }) //查詢所有資料,並按照age降序順序返回資料 api.find({},null,{sort:{age:-1}}) //1是升序,-1是降序 .then(result => { console.log(result) })})
Express+MongoDB步步為'贏'