Node.js连接MongoDB数据库(Mongoose)
创作时间:
作者:
@小白创作中心
Node.js连接MongoDB数据库(Mongoose)
引用
1
来源
1.
https://www.bilibili.com/read/mobile?id=35793664
本文将详细介绍如何使用Node.js连接MongoDB数据库,并使用Mongoose库进行数据库操作。文章将涵盖数据库连接、模型定义和路由处理等多个方面,适合有一定Node.js基础的开发者阅读。
一、封装的版本
首先,需要通过npm安装Mongoose库:
npm install mongoose --save
二、目录结构
三、数据库连接文件
在database/connect.js
中,我们需要连接到MongoDB数据库:
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/travel")
.then(() => {
console.log("数据库连接成功!");
})
.catch((err) => {
console.log("数据库连接失败!", err)
})
module.exports = mongoose;
注:如果数据库不能连接,可尝试把 localhost
改成 127.0.0.1
后进行测试。
四、模型定义
在database/studentModel.js
中,我们需要定义要操作的集合:
var mongoose = require("./connect");
var Schema = mongoose.Schema
var stuSchema = new Schema({
name:String,
age:Number,
address:String
})
var stuModel = mongoose.model('student',stuSchema)
module.exports = stuModel
注:Mongoose 在操作MongoDB时会自动给model的集合名加个s
。
五、路由处理
在routes/student.js
中,我们需要处理对MongoDB的增删改查操作:
var express = require('express');
var studentModel = require("./../database/studentModel");
var router = express.Router();
router.get('/list',async function(req, res, next) {
try{
let {name,address,current,pageSize} = req.query;
let obj = {};
if(name){
obj.name = new RegExp(name);
}
if(address){
obj.address = new RegExp(address);
}
let skip = (current-1)*pageSize;
let result =await studentModel.find(obj).skip(skip).limit(pageSize);
let total = await studentModel.find(obj).countDocuments();
console.log("total",total);
res.send({code:0,data:result,message:"成功",count:total});
}catch(err){
console.log(err);
res.send({code:500,message:"服务器出错",detailMsg:err});
}
});
router.get('/del', async function(req, res, next) {
try{
let {_id} = req.query;
console.log(_id);
let result = await studentModel.deleteOne({"_id":_id});
if(result.deletedCount>0){
res.send({code:0,message:"删除成功"});
}else{
res.send({code:1,message:"删除失败"});
}
}catch(err){
console.log(err);
res.send({code:500,message:"服务器出错",detailMsg:err});
}
});
router.post('/add',async function(req, res, next) {
try{
let {name,age,address} = req.body;
let result = await studentModel.insertMany([{name,age,address}]);
console.log(req.body);
if(result.length>0){
res.send({code:0,message:"添加成功"});
}else{
res.send({code:1,message:"添加失败"});
}
}catch(err){
res.send({code:500,message:"服务器出错",detailMsg:err});
}
});
router.get('/getById',async function(req, res, next) {
try{
let {id} = req.query;
let result = await studentModel.findOne({"_id":id});
console.log(req.query);
console.log(result);
res.send({code:0,message:"成功",data:result});
}catch(err){
console.log(err);
res.send({code:500,message:"服务器出错",detailMsg:err});
}
});
router.post('/update',async function(req, res, next) {
try{
let {id,name,age,address} = req.body;
let result = await studentModel.updateOne({"_id":id},{$set: {name,age,address}});
console.log(req.query);
console.log(result);
if(result.modifiedCount>0){
res.send({code:0,message:"修改成功"});
}else{
res.send({code:0,message:"修改失败"});
}
}catch(err){
console.log(err);
res.send({code:500,message:"服务器出错",detailMsg:err});
}
});
module.exports = router;
注:Mongoose提供的操作集合的方法和MongoDB本身操作集合的方法有些区别。
热门推荐
新企业如何建立有效的危机管理机制
老人房厨房装修设计要点 老人厨房如何布置方便实用又安全?
企业如何加强货币资金管理
汉字中的火字:文化内涵与生活中的象征意义探讨
赵孟頫三幅超高清《赤壁赋》书法作品欣赏
生猪养殖恢复正常盈利 8月猪价或冲年内最高点
指数点位的计算方法及意义是什么?这种计算方法和意义在投资分析中有哪些应用?
指数点位的计算方法及意义是什么?这种计算方法和意义在投资分析中有哪些应用?
如何识别短期内的盈利潜力股
如何确认Docker是否成功运行:从服务检查到网络连接的全面指南
特色课程点亮校园,课后服务精彩纷呈
个人电子邮箱的填写格式(规范与便利并存)
像无足轻重的东西一样自由 | 极简生活启示录
一字之差,天壤之别?风湿性关节炎和类风湿关节炎的区别
变速箱油不是你想免维护就能免的!揭秘其背后的更换逻辑
犯罪嫌疑人拒不交代姓名的法律适用与实践探讨
缩量下跌意味着什么?如何判断股市趋势?
轮毂材料是什么
如何进入深度冥想?掌握技巧与方法,获得内心的平静与集中力
一万元预算如何搭配电脑配置?2025年最佳性价比方案解析
PCIe基础概念与设备树详解
如何查询小区物业的服务质量?这些查询方法有哪些实际效果?
刑法小课堂第七期:与法同行,点亮未成年人法治灯塔
大豆及豆粕市场分析
三国谋定天下武将排名表最新 2024最强开荒强度排行推荐
探索泥炭沼泽的形成与生态价值:湿地保护的关键
LED太阳能中国结的维修:让科技与艺术之光持续闪耀
女性白头发增多,别总认为是老了!或是体内缺乏4种营养“预警”
虚汗和正常出汗的区别是什么
春天诗句精选:表达春意的经典诗词欣赏