安裝好了
Express和MonogoDB之后,如何把他們配合起來使用呢,這里就需要用到mongoose了。本文緊接著【React.js 01】React腳手架,文章寫得,項目根目錄也是在對應的腳手架創(chuàng)建的項目目錄中。
-
安裝
項目根目錄下輸入命令
npm install mongoose --save
即可。
-
連接
安裝完畢后,在之前對應的Express章節(jié)中的server目錄下去修改server.js文件,新增如下內(nèi)容:
//引入mongoose
const mongoose = require('mongoose')
//連接mongo
const DB_URL = 'mongodb://127.0.0.1:27017'
mongoose.connect(DB_URL)
mongoose.connection.on('connected',()=>{console.log('mongo connect success');})
依次啟動MonogoDB和Express。
這時候你就會看到啟動Express的終端會提示mongo connect success。

連接成功
-
定義文檔類型
利用schema和model新建模型
//類似定義了一張表
const User = mongoose.model('user',new mongoose.Schema({
name:{type:String,require:true},//user字段,類型String,是否必須
age:{type:Number,require:true}
}))
新增數(shù)據(jù):
User.create({
name:'Kate',
age:18
},(err,doc)=>{
console.log(err ? err : doc);
})
成功后即可看到Express終端提示:
{ _id: 5abdd0adc97f318357ec2da8, name: 'Kate', age: 18, __v: 0 }
查詢數(shù)據(jù):
app.get('/data',(req,res)=>{
//查詢數(shù)據(jù)
User.find({},(err,doc)=>{
res.json(doc)
})
})
在瀏覽器地址欄輸入http://localhost:9093/data就可以看到:

返回的內(nèi)容
就代表我們查找成功了。
當然,你也可以在
find()函數(shù)的第一個參數(shù)寫入查詢條件:
app.get('/data',(req,res)=>{
//帶條件查詢數(shù)據(jù)
User.find({name:'Mike'},(err,doc)=>{
res.json(doc)
})
})
但是這時候你會發(fā)現(xiàn),雖然只有一條數(shù)據(jù),但是JSON的格式依舊是套著數(shù)組的,所以,也有不套數(shù)組外殼的方法findOne():
app.get('/data',(req,res)=>{
//查詢數(shù)據(jù)
User.findOne({name:'Mike'},(err,doc)=>{
res.json(doc)
})
})
此時僅返回一個{}套著的JSON對象
刪除數(shù)據(jù):
//刪除User中年齡為18的
User.remove({age:18},(err,doc)=>{
console.log(err ? err : doc);
})
成功后即可看到Express終端提示:
{ n: 3, ok: 1 }
在瀏覽器地址欄輸入http://localhost:9093/data就可以看到:
[]//一個空數(shù)組,就代表我們刪除成功了。
更新數(shù)據(jù):
//更新數(shù)據(jù)
User.update({name:'Mike'},{'$set':{age:30}},(err,doc)=>{
console.log(doc);
})
最最基礎(chǔ)的使用入門也就先到這,講的有點亂,這也是自己學React的時候順帶學的一個簡易的服務端,方便支持自己的項目。
后面還會有更負責的應用,包括拆分表之后的,還有POST請求,后期會再更新上。
附上完整代碼:
const express = require('express')
//引入mongoose
const mongoose = require('mongoose')
//連接mongo 并且使用imooc這個集合 不存在則會自動創(chuàng)建
const DB_URL = 'mongodb://127.0.0.1:27017/imooc'
mongoose.connect(DB_URL)
mongoose.connection.on('connected',()=>{console.log('mongo connect success');})
//類似mysql的表,mongo會有文檔、字段的概念
//類似定義了一張表
const User = mongoose.model('user',new mongoose.Schema({
name:{type:String,require:true},
age:{type:Number,require:true}
}))
//創(chuàng)建數(shù)據(jù)
// User.create({
// name:'Jason',
// age:18
// },(err,doc)=>{
// console.log(err ? err : doc);
// })
//刪除數(shù)據(jù)
// User.remove({age:18},(err,doc)=>{
// console.log(err ? err : doc);
// })
// //更新數(shù)據(jù)
// User.update({name:'Mike'},{'$set':{age:30}},(err,doc)=>{
// console.log(doc);
// })
// 新建app
const app = express()
app.get('/',(req,res)=>{
res.send('<h1>Hello world</h1>')
})
app.get('/data',(req,res)=>{
//查詢數(shù)據(jù)
User.findOne({name:'Mike'},(err,doc)=>{
res.json(doc)
})
})
app.listen(9093,function(){
console.log('Node app start at port 9093');
})