Mongoose使用教程和基础实例

MongoDB是非关系型数据库,Mongoose的作用就是简单快速地操作MongoDB。

给大家推荐一个非常好用的MongoDB可视化工具:RoBo3T,下载地址:https://robomongo.org/

接下来使用npm以下命令从命令行安装Mongoose :

npm install mongoose

然后开始配置config.js,其中其中数据库名称为dbs,Schema建表后,用Schema生成一个model:

dbs:'mongodb://127.0.0.1:27017/dbs'

在这里插入图片描述
下面通过一个基础实例来进一步了解Mongoose的应用。

第一步:建一个Schema(person.js)

Mongoose的一切都始于一个Schema。每个schema映射到MongoDB的集合(collection)和定义该集合(collection)中的文档的形式。

const mongoose = require('mongoose')
let personSchema=new mongoose.Schema({
    name: String,
    age: Number
})
module.exports= mongoose.model('Person',personSchema)

第二步:由Schema创建一个模型,我们通过:mongoose.model(modelName, schema)

module.exports= mongoose.model('Person',personSchema)

第三步:实现数据库的真实连接,去app.js中补充以下

我们可以通过利用mongoose.connect()方法连接MongoDB 。这是最需要的在连接数据库运行在默认端口(27017)上。如果本地连接失败,然后尝试用127.0.0.1不是localhost。有时可能会出现问题,当本地主机名已更改。

const dbConfig=require('./dbs/config')

mongoose.connect(dbConfig.dbs,{
  useNewUrlParser:true
})

第四步:写数据(用实例)

router.post('/addPerson',async function(ctx){
  const person=new Person({name:ctx.request.body.name,    age:ctx.request.body.age})
    let code
    try{
      await person.save()
      code=0
    }catch(e){
      code=-1
    }
  ctx.body={
    code:code
  }
})

然后我们测试以下,插入一条数据:

curl -d 'name=luoqiaoqiao&age=22' http://localhost:3000/users/addPerson

在这里插入图片描述
去数据库查看是否插入成功:

在这里插入图片描述
第五步:读数据(用模型)

router.post('/getPerson',async function(ctx){
  	     const result= await Person.findOne({
    		name:ctx.request.body.name
  	     })
  	     const results= await Person.find({
    		name:ctx.request.body.name
  	     })
  	     ctx.body={
    	        code:0,
    		result,
    		results
  	     }})

测试读取数据:

curl -d 'name=luoqiaoqiao' http://localhost:3000/users/getPerson

第六步:更新数据(用模型)

router.post('/getPerson',async function(ctx){
 	     const result=await Person.where({
    		name:ctx.request.body.name
  	   }).update({
    		age:ctx.request.body.age
           })
  	   ctx.body={
    	        code:0
           }})

现在把age改成3岁,看看效果(刚刚写入的是22岁):

curl -d 'name=luoqiaoqiao$age=3' http://localhost:3000/users/updatePerson

在这里插入图片描述
第七步:删除数据(用模型)

router.post('/removePerson',async function(ctx){
            const result=await Person.where({
    		name:ctx.request.body.name
            }).remove()
            ctx.body={
                code:0
  	    }})

我们将姓名为luoqiaoqiao的数据删除:

curl -d 'name=luoqiaoqiao' http://localhost:3000/users/removePerson

在这里插入图片描述
删除成功,至此实例完成。进一步深入的学习可以参考Mongoose英文文档:https://mongoosejs.com/docs/guide.html

Chrome打开可以翻译成中文,更方便。此外想要中文文档可以访问:https://mongoose.shujuwajue.com

原创文章 22 获赞 4 访问量 782

猜你喜欢

转载自blog.csdn.net/weixin_42224055/article/details/105775200