【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 04】Express配合MonogoDB使用_第1张图片
连接成功

  • 定义文档类型

利用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就可以看到:

返回的内容

就代表我们查找成功了。
当然,你也可以在 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请求,后期会再更新上。

附上完整代码:

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'); })

你可能感兴趣的:(【React.js 04】Express配合MonogoDB使用)