[从入门到入土(后端篇)]五,nodejs连接mongodb+简单使用
上一篇文章已经启动了mongodb数据库,这一篇文章将讲解nodejs连接并操作mongodb数据库
配合demo使用会更好哦
1.mongoose的安装以及封装
在nodejs中我们需要使用mongoose这个插件来对mongodb数据库进行操作
- mongoose官网:mongoose中文网
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 用来处理连接数据库相关操作
- 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:"添加新用户失败"
}
}
}
效果:
- 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:"操作失败"
}
}
}
效果:
- 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:"操作失败"
}
}
}
效果:
- 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:"更新用户失败"
}
}
}
效果:
写在最后
连接数据库,以及其基本的增删改查操作已经讲解完成,如果有问题的,可以查看demo的源码。这些只是基本操作,后续我会讲解 ,我在实际博客网站搭建中,所使用的一些数据库的操作方法。