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本身操作集合的方法有些区别。
热门推荐
股东权益受侵害,该如何维护?
失业率飙升!印度高学历青年更易失业,普通人得冒战火赴中东打工
2025驾驶证年龄限制调整了,超过这年龄将不能开车,你还能开几年
秋冬补锌首选:牡蛎的养生之道
科学补锌,助力孩子健康成长!
孩子缺锌免疫力下降?这份补锌指南请收好
秋冬补锌正当时,这些食物最有效!
疫病用什么杀菌药最好
福州新春打卡:三坊七巷评话闽剧&两马灯会
应届生必修:职场通关秘籍
冬日鼓山探秘:福州的文化瑰宝
冬日打卡福州三坊七巷:穿越千年的浪漫之旅
应届生如何在秋招中脱颖而出?
湖大校友的职业选择:三条不同道路的成功案例
秋招压力大?这些心态调整方法请收好
开心果产地在中国哪里,开心果有哪些种类?
紫石英的功效与作用
中医理论进阶版:你必须知道的脏腑经络学说
成吉思汗:蒙古帝国的奠基者
元朝:开启“大中国”时代的伟大王朝
忽必烈:从大蒙古国到元朝的统一之路
官方教你减肥!除了吃,还有这几个小窍门→
用行动诠释孝道,为她点赞!
从配角到主角:宇树科技机器人在春晚舞台的科技秀
检查出染色体异常还能要孩子吗?染色体异常能做试管婴儿吗?
染色体异常与生育:能否继续生育?试管婴儿技术能否解决?
流感疫苗,三价VS四价、灭活VS减毒、裂解VS亚单位,到底该怎么选?
接种量迎来小高峰!记者实探流感疫苗接种流程,内附医生建议
双十一购药攻略:小金丸价格大揭秘!
吃完就能睡?从晚饭到睡觉,“黄金”间隔期是......