安装好了
Express
和MonogoDB
之后,如何把他们配合起来使用呢,这里就需要用到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');})
依次启动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}
}))
新增数据:
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('<h1>Hello world</h1>')
})
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');
})