[从入门到入土(后端篇)]五,nodejs连接mongodb+简单使用

[从入门到入土(后端篇)]五,nodejs连接mongodb+简单使用

上一篇文章已经启动了mongodb数据库,这一篇文章将讲解nodejs连接并操作mongodb数据库

配合demo使用会更好哦

前端demo地址

后端demo地址

1.mongoose的安装以及封装

在nodejs中我们需要使用mongoose这个插件来对mongodb数据库进行操作

1.安装插件
npm install mongoose --save
2.连接数据库
  • 2.1 在config文件夹中新建dbconfig.js 数据库的配置文件
//dbconfig.js 
const config={
    database: 'demo', // 使用哪个数据库
    username: '', // 用户名
    password: '', // 口令
    host: 'localhost', // 主机名
    port: 27017 // 端口号,
}

module.exports = config
  • 2.2 在src中新建mongodb文件夹方便数据库操作统一处理,新建models文件里面存放数据库模型,新建mongodbConfig.js 用来处理连接数据库相关操作

501.png

  • 2.3 连接数据库
    mongodbConfig.js
const  mongoose =require("mongoose");
const  mongooseConf=require("../../config/dbConfig");

let DB_URL = mongooseConf.host;
let DB_PORT = mongooseConf.port;
let DB_BASE = mongooseConf.database;
let DB_USER = mongooseConf.username;
let DB_PWD = mongooseConf.password;

//没有账号的访问
let db=`mongodb://${DB_URL}:${DB_PORT}/${DB_BASE}`;
mongoose.connect(db,{ useNewUrlParser: true ,useUnifiedTopology:true});//本地测试

//有账号的访问
/*let db=`mongodb://${DB_USER}:${DB_PWD}@${DB_URL}:${DB_PORT}/${DB_BASE}`;
mongoose.connect(db,{ useNewUrlParser: true ,useUnifiedTopology:true,authSource: 'admin'});*/

//链接数据库成功回调
mongoose.connection.on("connected",()=>{
    console.log("连接数据库成功");
});

//链接数据库失败回调
mongoose.connection.on("err",()=>{
    console.log("连接数据库失败");
});

//断开链接回调
mongoose.connection.on("disconnected",()=>{
    console.log("断开连接");
});

module.exports=mongoose;

启动node服务

3.操作数据库

利用mongoose操作数据库,有个很重要的模块叫做Schema,通过这个模型,就可以对mongodb数据库里的对象进行操作
所以models文件夹中就存放这些Schema。

我们以用户(包括姓名,年龄,性别)为一个对象,进行简单的增删改查操作

  • 3.1 新建用户的Schema对象

在models文件夹下新建 user.js 文件

const mongoose = require("../mongodbConfig.js")

let User = new mongoose.Schema({
    name:{type:String,default:""},
    age:{type:Number,default:0},
    sex:{type:String,default:""},
});

module.exports = mongoose.model("User",User);
  • 3.2 增加一个用户

使用的接口:<Schema模型>.create(object)

我们在src/controller文件夹下新建user文件夹以及index.js(用来专门处理user对象的相关操作的接口)

const userM = require("../../mongodb/models/user.js"); //引入user的模型

async function createUser(ctx,next){
    //获取前端传来的值
    let newUser = {
        name:ctx.request.body.name,
        age:ctx.request.body.age,
        sex:ctx.request.body.sex,
    }
    try {
        let result = await userM.create(newUser);
        ctx.body={
            code:200,
            msg:"添加新用户成功"
        }
    } catch (error) {
        ctx.body={
            code:400,
            msg:"添加新用户失败"
        }
    }

}

效果:
510.png

511.png

  • 3.3 获取用户
    使用的接口:<Schema模型>.find(object)
    使用的接口:<Schema模型>.findOne(object)
 async function readUser(ctx,next){
    try {
        let result = await userM.find({});
        ctx.body={
            code:200,
            data:result,
            msg:"获取用户信息成功",
        }
    } catch (error) {
        ctx.body={
            code:400,
            msg:"操作失败"
        }
    }
}

效果:
512.png

  • 3.4 删除用户
    使用的接口:<Schema模型>.deleteOne(object)
async function delUser(ctx,next){
    let _id = ctx.request.body.id;
    try {
        let result = await userM.deleteOne({"_id": _id});
        ctx.body={
            code:200,
            msg:"删除用户成功",
        }
    } catch (error) {
        ctx.body={
            code:400,
            msg:"操作失败"
        }
    }
}

效果:
513.png

  • 3.5 更新用户
    使用的接口:<Schema模型>.updateOne(<filter筛选条件>,object)

通过前端传来的新值来修改用户

async function updateUser(ctx,next){ 
    let _id = ctx.request.body.id;
    let newUser = {
        name:ctx.request.body.name,
        age:ctx.request.body.age,
        sex:ctx.request.body.sex,
    }
    try {
        let result = await userM.updateOne({"_id":_id},newUser);
        ctx.body={
            code:200,
            msg:"更新用户成功"
        }
    } catch (error) {
        ctx.body={
            code:400,
            msg:"更新用户失败"
        }
    }
}

效果:
514.png

写在最后

连接数据库,以及其基本的增删改查操作已经讲解完成,如果有问题的,可以查看demo的源码。这些只是基本操作,后续我会讲解 ,我在实际博客网站搭建中,所使用的一些数据库的操作方法。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值