nodejs快速连接mongodb,实现数据操作

本文介绍了Node.js的基础知识,包括其在服务端的角色和核心特性。接着详细讲解了MongoDB,阐述了如何新增、修改、查询和删除数据。此外,还探讨了使用mongoose第三方模块来操作MongoDB,并概述了基本的数据库操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


前言

用到的开发软件:

node软件:node官网

mongodb数据库:选择commuityServer下载,安装时,选自定义

compass数据库可视化工具:可单独下载,也可安装mongodb时下载

第一次接触Node,也就会一点点基础操作。

一、nodejs是什么?

nodejs是运行在服务端的js。

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

它的核心知识是ESMSCript(js里面有的),和node环境提供操作系统模块、文件模块等API(别人写好的,尽情调用)

二、mongodb是什么?

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,跟MySQL,Oracle等数据一样,都是用来存储数据的。只不过两者的术语有点区别:

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins 表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

 

2.1 新增数据

     创建集合分两步,第一是对集合设定规则【类似表结构,有哪些字段,字段的类型等等】,第二是用规则创建集合,创建mongoose.Schema构造函数的实例即可创建集合。

   第一种方法:创建集合的形式

//创建集合规则
const courseSchema=new mongoose.Schema({
	name:String,
	author:String,
	isPub:Boolean
});

//引用规则创建集合  返回构造函数
const Course=mongoose.model('Course',courseSchema)

//new 
const course=new Course({
	name:"急救小知识",
	author:"佚名",
	isPub:true
})

//保存到数据库里
course.save();

第二种:创建文档的形式 

//创建集合规则
const courseSchema=new mongoose.Schema({
	name:String,
	author:String,
	isPub:Boolean
});

//引用规则创建集合  返回构造函数
const Course=mongoose.model('Course',courseSchema)
Course.create({
	name:"php开发",
	author:"佚名",
	isPub:false}
,(err,doc)=>{
	console.log(err);
	console.log(doc)
})

2.2 修改数据:updateOne()、updateMany()

/创建集合规则
const courseSchema=new mongoose.Schema({
	name:String,
	author:String,
	isPub:Boolean
});
//引用规则创建集合  返回构造函数
const Course=mongoose.model('Course',courseSchema)
//_id是条件
Course.updateOne({_id:'5ff2c2f8e435bb1c58490b6f'},{name:'女生化妆宝典'}).then(result=>console.log(result))

2.3 查询数据:find()和findOne()

/创建集合规则
const courseSchema=new mongoose.Schema({
	name:String,
	author:String,
	isPub:Boolean
});

//引用规则创建集合  返回构造函数
const Course=mongoose.model('Course',courseSchema)
//无条件查询
Course.find().then(result=>console.log(result))
//带条件查询全部
Course.find({_id:'5ff2c2f8e435bb1c58490b6f'}).then(result=>console.log(result))
//只查询一条
Course.findOne({_id:'5ff2c2f8e435bb1c58490b6f'}).then(result=>console.log(result))


2.4 删除数据:findOneAndDelete()、deleteMany()

//创建集合规则
const courseSchema=new mongoose.Schema({
	name:String,
	author:String,
	isPub:Boolean
});

//引用规则创建集合  返回构造函数
const Course=mongoose.model('Course',courseSchema)
//按条件删除一个
Course.findOneAndDelete({_id:'5ff2c2f8e435bb1c58490b6f'}).then(result=>console.log(result))

三、第三方模块 mongoose操作mongodb

mongoose是nodeJS提供连接 mongodb的一个库. 基本可以实现对mongodb数据库的操作需求。

使用:只需要在当前项目,打开cmd,输入命令:

npm install mongoose

启动数据库服务:

Net stop mongodb 关闭服务
Net start mongodb  启动服务

如果服务拒绝访问,则

打开C:\Windows\System32找到cmd.exe然后以管理员的身份运行。 

数据库连接:数据库在有数据插入时,会自动生成。

const mongoose=require('mongoose') //先引入

mongoose.connect('mongodb://localhost/Stu',{ useNewUrlParser: true,useUnifiedTopology: true})
.then(()=>console.log('数据库连接成功'))
.catch(err=>console.log(err,'数据库连接失败'))

 

四、基本流程

  • 构造web服务器

  • app.js页面
    
    const http=require('http')
    const app=http.createServer();//服务器
    //当客户端请求服务器时,
    app.on('request',(req,res)=>{
    	//使用路由,判断好后去调用路由
    	router(req,res,()=>{
    		console.log('1') //必填的回调函数
    	});
    	serve(req,res,()=>{ 
    		//启用静态资源功能
    	})
    });
    //必须监听端口
    app.listen('80')
    //运行node app.js
    console.log('服务器启动成功')

     

  • 创建user集合:需要exports,给外部引用
  • const mongoose=require('mongoose');
    //创建集合规则
    const Student=new mongoose.Schema({
    	name:{
    		type:String,
    		required:true,
    		minlength:2
    	},
    	age:{
    		type:Number,
    		required:true,
    		minlength:1
    	},
    	sex:{
    		type:String,
    		required:true
    	},
    	email:String,
    	hobby:[ String ],
    	college:String,
    	enterDate:{
    		type:Date,
    		default:Date.now
    	}
    })
    //使用规则创建集合
    const Stu= mongoose.model('Student',Student);
    //导出模块
    module.exports=Stu
    

     

  • 拟定路由协议:在当前项目,npm install router
  • const Student=require('../model/user.js')//希望接收到构造函数,用变量接收
    const getRouter=require('router')//先install 引入路由模块
    const router=getRouter();//获取路由对象
    const template=require('art-template')//引入模板引擎
    const queryString=require('querystring')
    //响应路由  index.art静态模板
    router.get('/add',(req,res)=>{
    	//添加学生
    	let html=template('index.art',{})
    	res.end(html);//响应给客户端
    })
    //list.art静态模板
    router.get('/list',async (req,res)=>{
    	//展示学生
    	let Stus= await Student.find();//查找所有学生
    	console.log(Stus)
    	let html=template('list.art',{
    		Stus:Stus
    	})
    	res.end(html)
    })
    //实现学生信息添加
    router.post('/add',(req,res)=>{
    	//接收post数据
    	let formDate=''
    	req.on('data',param=>{
    		formDate+=param
    	})
    	//请求参数
    	req.on('end',async ()=>{  //async变成异步函数
    		Student.create(queryString.parse(formDate))//使用Student创建数据
    		res.writeHead(301,{
    			Location:'/list'  //重定向
    		})
    		res.end()//结束请求
    	})
    })
    module.exports=router

     

  • 静态页面渲染:安装第三方模块art-template,相关语法搜搜art-template语法学习

  1、准备一个静态页面,改为art后缀。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<h3>{{name}}</h3>
		<h3>{{age}}</h3>
	</body>
</html>

2、在js里引用模板

//导入模板引擎
const template=require('art-template');
const path=require('path')//系统模块
//模板路径是绝对路径
const view=path.join(__dirname,'views','index.art')
const html=template(view,{
	name:"家家",
	age:24
})
console.log(html)

 


其他

原文demo地址:简单demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值