mongoose
鏈接mongodb
數據庫Node.js鏈接mongodb
數據庫有不少種方法,經過mongoose
模塊引入是其中的一個方法
|---|根目錄 |---|---|connect.js(mongoose測試鏈接) |---|---|user.js(定義user數據表) |---|---|operate.js(定義mongodb的增刪改查功能) |---|---|login.js(Node後臺調用operate.js文件的方法處理數據)
mongoose
測試鏈接當前使用的mongoose
版本爲4.13.7
connect.js
const mongoose = require("mongoose"); const DB_URL = "mongodb://127.0.0.1:27017/infos"; mongoose.Promise = global.Promise; mongoose.connect(DB_URL, { useMongoClient: true }); mongoose.connection.on("connected", () => { console.log("mongodb數據庫鏈接成功") }); mongoose.connection.on("error", (error) => { console.log("mongodb數據庫鏈接失敗", error) }); module.exports = mongoose;
mongoose
模塊const mongoose = require("mongoose");
mongodb
的本機地址const DB_URL = "mongodb://127.0.0.1:27017/infos";
127.0.0.1
是本地IP
地址27017
是mongodb
的服務啓動端口infos
是mongodb
的一個數據集合名字javascript
mongodb
能夠有不少數據集合,每一個集合中能夠有不少數據表。mongodb
),裏邊分了不一樣的停車區(集合
,這裏的infos
),每一個停車區能夠停不少車((下文提到的user
),至關於每一個數據集合裏邊能夠有不少張數據表)。若是須要給mongodb
加上用戶及密碼,能夠這樣java
const DB_URL = "mongodb://username:password@127.0.0.1:27017/infos";
username
爲用戶名,中間英文:
,password
爲密碼,其他不變mongoose.connection.on("connected", callback())
mongodb數據庫鏈接成功
mongoose.connection.on("error", callback())
mongodb數據庫鏈接失敗
和錯誤信息mongoose
模塊module.exports = mongoose;
user.js
const mongoose = require('mongoose'); const db = require('./connect.js'); const userSchema = new mongoose.Schema({ number: { type: Number}, email: { type: String }, password: { type: String }, rePassword: { type: String }, mobile: { type: String }, question: { type: String }, answer: { type: String }, }); let userModel = db.model('user', userSchema); module.exports = userModel;
mongoose
模塊const mongoose = require("mongoose");
mongodb
數據庫的模塊const db = require('./connect.js');
Schema
const userSchema = new mongoose.Schema({})
mongoose
對象的Schema
屬性建立一個Schema
對象Schema
原意爲架構
在mongodb
中,每個數據字段都要有固定的數據類型,因此Schema
在mongoose
中的意思爲,每一張數據表對應的字段的數據類型
Schema
所可以擁有的數據類型有如下幾個mongodb
String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array
字段介紹,以number
字段爲例數據庫
type
是該字段的數據類型default
是該字段的默認值let userModel = db.model('user', userSchema);
userModel
db.model
方法,第一個參數是數據表的名字,第二個參數是該數據表使用的Schema
module.exports = userModel;
operate.js
中使用這個對象的mongodb
的增刪改查方法mongodb
的增刪改查功能operate.js
let userModel = require('./user.js'); module.exports = { save(data) { return new Promise((resolve, reject) => { userModel.create(data, (err, docs) => { if (err) { rejct(err); } else { resolve(docs); } }) }) }, 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) } }) }) } };
user
模塊let userModel = require('../models/users');
userModel
這個數據表直接的調用mongodb
的各類方法operate
處理數據login.js
const express = require('express'); const router = express.Router(); let operate = require('./operate'); router.post('/', function (req, res, next) { let param = {}; param.email = req.body.email; param.password = req.body.password; console.log(param); operate.save(param).then(result => { if (result) { res.json({ data: result, success: true }) } else { res.json({ data: result, success: false }) } }); }); module.exports = router;
Express
的router
方法Express
,定義一個post
方法post
方法傳遞的對象數據掛在在req.body
上operate.save()
方法,傳遞param
對象參數result
,對獲取到的結果進行進一步處理