【React.js 04】Express配合MonogoDB使用

安裝好了ExpressMonogoDB之后,如何把他們配合起來使用呢,這里就需要用到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');})

依次啟動MonogoDBExpress。

這時候你就會看到啟動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');
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,562評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,039評論 25 709
  • 作為華中組組長朱團輝,本周是我們小組負責每日話題 今天話題: 談談電影《戰(zhàn)狼2》「源自朱團輝|每日輝分享|007-...
    朱團輝閱讀 555評論 0 5
  • 曾經(jīng)看到一篇文中說“遠嫁的女兒注定是父母丟失的孩子”,細細想遠嫁的20幾年里我陪在父母身邊多少時間?為爸爸媽媽做了...
    遠嫁的女兒閱讀 227評論 0 0
  • “中國具有最大的潛能。中國人的心靈最純樸,最愛追求真理?!?“中國是未來的國家。這里洋溢著幸福,這里充滿著美麗。我...
    管道閱讀 207評論 0 0

友情鏈接更多精彩內(nèi)容