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

安装好了ExpressMonogoDB之后,如何把他们配合起来使用呢,这里就需要用到mongoose了。本文紧接着【React.js 01】React脚手架,文章写得,项目根目录也是在对应的脚手架创建的项目目录中。
  • 安装
项目根目录下输入命令
npm install mongoose --save

即可。
  • 连接
安装完毕后,在之前对应的Express章节中的server目录下去修改server.js文件,新增如下内容:
//引入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
【React.js|【React.js 04】Express配合MonogoDB使用
文章图片
连接成功
  • 定义文档类型
利用schema和model新建模型
//类似定义了一张表 const User = mongoose.model('user',new mongoose.Schema({ name:{type:String,require:true},//user字段,类型String,是否必须 age:{type:Number,require:true} }))

新增数据:
User.create({ name:'Kate', age:18 },(err,doc)=>{ console.log(err ? err : doc); })

成功后即可看到Express终端提示:
{ _id: 5abdd0adc97f318357ec2da8, name: 'Kate', age: 18, __v: 0 }

查询数据:
app.get('/data',(req,res)=>{ //查询数据 User.find({},(err,doc)=>{ res.json(doc) }) })

在浏览器地址栏输入http://localhost:9093/data就可以看到:

【React.js|【React.js 04】Express配合MonogoDB使用
文章图片
返回的内容
就代表我们查找成功了。
当然,你也可以在 find()函数的第一个参数写入查询条件:
app.get('/data',(req,res)=>{ //带条件查询数据 User.find({name:'Mike'},(err,doc)=>{ res.json(doc) }) })

但是这时候你会发现,虽然只有一条数据,但是JSON的格式依旧是套着数组的,所以,也有不套数组外壳的方法findOne()
app.get('/data',(req,res)=>{ //查询数据 User.findOne({name:'Mike'},(err,doc)=>{ res.json(doc) }) })

此时仅返回一个{}套着的JSON对象
删除数据:
//删除User中年龄为18的 User.remove({age:18},(err,doc)=>{ console.log(err ? err : doc); })

成功后即可看到Express终端提示:
{ n: 3, ok: 1 }

在浏览器地址栏输入http://localhost:9093/data就可以看到:
[]//一个空数组,就代表我们删除成功了。

更新数据:
//更新数据 User.update({name:'Mike'},{'$set':{age:30}},(err,doc)=>{ console.log(doc); })

最最基础的使用入门也就先到这,讲的有点乱,这也是自己学React的时候顺带学的一个简易的服务端,方便支持自己的项目。
后面还会有更负责的应用,包括拆分表之后的,还有POST请求,后期会再更新上。
【【React.js|【React.js 04】Express配合MonogoDB使用】附上完整代码:
const express = require('express') //引入mongoose const mongoose = require('mongoose')//连接mongo 并且使用imooc这个集合 不存在则会自动创建 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} }))//创建数据 // User.create({ //name:'Jason', //age:18 // },(err,doc)=>{ //console.log(err ? err : doc); // })//删除数据 // User.remove({age:18},(err,doc)=>{ //console.log(err ? err : doc); // })// //更新数据 // User.update({name:'Mike'},{'$set':{age:30}},(err,doc)=>{ //console.log(doc); // })// 新建app const app = express()app.get('/',(req,res)=>{ res.send('Hello world') }) app.get('/data',(req,res)=>{ //查询数据 User.findOne({name:'Mike'},(err,doc)=>{ res.json(doc) }) })app.listen(9093,function(){ console.log('Node app start at port 9093'); })

    推荐阅读