Nodejs中mongodb的使用及封装,直接上干货
小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】存中…(img-HpQoqNAa-1711712696265)][外链图片转存中…(img-jXDETVzX-1711712696265)][外链图片转存中…(img-Ub9V8yNy-1711712696266)][外链图片转存
//res.ops内容 数组
//result.insertedId 插入后的id
//删:
deleteOne({条件},(err,result)=>{})
//改:
updateOne({条件},{更新后},(err,res)=>{})
updateMany({条件},{更新后},(err,res)=>{})
updateMany({条件},{更新后},{配置},(err,res)=>{})
//配置: upsert:true 插入 projection:true 全局替换
//查:
user.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{result=对象})
user.find({条件},{projection:{key:0}}).toArray((err,result)=>{reulst==arr})
user.countDocuments((err,num)=>{num返回数量})
//排
user.find(…).sort({key:-1}).toArray…
user.find({},{projection:{},sort:{key:-1}}).toArray…
关闭库
client.close()
Nodejs+mongodb代码
- 先在
mongodb
里创建库student
- 再创建其下的集合
user
- 插入数据
- 查看
Nodejs+mongodb
// 1.安装引入
const mongodb = require(‘mongodb’)
// 2.实例化
const mongoCt = mongodb.MongoClient
// 3.连接 mongodb 默认端口 27017 回调 err 错误 client 连接后的客户端
mongoCt.connect(‘mongodb://127.0.0.1:27017’, { useUnifiedTopology: true },(err, client) => {
if (!err) {
// 4.链接库
let db = client.db(‘student’)
// 5.链接集合
let user = db.collection(‘user’)
// 6.集合相关操作 user.API() 集合操作 返回 对象
// 增
// insertOne(对象数据,(err,res)=>{}) //res = 对象
// user.insertOne({“username” : “熊大”, “age” : “17”, “address” : “树林”},(err,res)=>{
// if(!err){
// // console.log(res)
// console.log(res.result.n) //结果 ok 1
// console.log(res.ops)// 数组
// /* [
// {
// username: ‘熊大’,
// age: ‘17’,
// address: ‘树林’,
// _id: 5e6f574fa9dc53365059251d
// }
// ]*/
// console.log(res.insertedId)// 插入后的id 5e6f575ea8e1d721fc88552c
// // 7.关闭链接 要在异步回调里关闭链接 否则会执行不了集合相关操作
// client.close()
// }
// })
// user.insertMany([{“username” : “李二”, “age” : “25”, “address” : “北京”},
// {“username” : “刘彦”, “age” : “17”, “address” : “上海”}],(err,res)=>{
// console.log(res.ops)
// /*
// [
// {
// username: ‘李二’,
// age: ‘25’,
// address: ‘北京’,
// _id: 5e6f59f436b34d37a4f2116f
// },
// {
// username: ‘刘彦’,
// age: ‘17’,
// address: ‘上海’,
// _id: 5e6f59f436b34d37a4f21170
// }
// ]
// */
// console.log(res.insertedIds)//{ ‘0’: 5e6f59f436b34d37a4f2116f, ‘1’: 5e6f59f436b34d37a4f21170 }
// // 7.关闭链接
// client.close()
// })
// 删除
//deleteOne({条件},(err,result)=>{})
//deleteMany({条件},(err,result)=>{})
// user.deleteMany({username:‘熊大’},(err,res)=>{
// console.log(res.ops)
// console.log(res.insertedIds)
// // 7.关闭链接
// client.close()
// })
// 更新
//updateMany({条件},{更新后},{配置},(err,res)=>{}) 配置: upsert:true 插入 projection:true 全局替换
// user.updateMany(
// {age:{$gt:22}},
// {$set:{address:“人民公园”}}
// // { upsert:true},
// // {projection:true }
// ,(err,result)=>{
// console.log(“result”,result)
// // 7.关闭链接
// client.close()
// })
// 查询操作
// user.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{result=对象})
// user.find({条件},{projection:{key:0}}).toArray((err,result)=>{reulst==arr})
// user.countDocuments((err,num)=>{num返回数量})
// user.find({age:{$gt:30}},(err,res)=>{
// res.toArray((err,data)=>{
// console.log(‘data’,data)
// /*
// data [
// {
// _id: 5e6f5ead75428112e5cc9c47,
// username: ‘黄河’,
// age: 35,
// address: ‘人民公园’
// },
// {
// _id: 5e6f5ead75428112e5cc9c48,
// username: ‘李而’,
// age: 33,
// address: ‘人民公园’
// }
// ]
// */
// 7.关闭链接
// client.close()
// })
// })
// user.find({age:{$gt:30}}).toArray((err,data)=>{
// console.log(‘data’,data)
// /*
// data [
// {
// _id: 5e6f5ead75428112e5cc9c47,
// username: ‘黄河’,
// age: 35,
// address: ‘人民公园’
// },
// {
// _id: 5e6f5ead75428112e5cc9c48,
// username: ‘李而’,
// age: 33,
// address: ‘人民公园’
// }
// ]
// */
// 7.关闭链接
// client.close()
// })
// 排序与分页
user.find({},{
skip:3, //跳过两个数据
limit:2, //拿到两个数据
sort:{age:1,_id:-1} // 先按age升序排列 age若相同 则按_id降序排列
}).toArray((err,res)=>{
console.log(res)
/*
[
{
_id: 5e6f5ead75428112e5cc9c40,
username: ‘张三’,
age: 18,
address: ‘人民公园’
},
{
_id: 5e6f5ead75428112e5cc9c44,
username: ‘诸葛亮’,
age: 19,
address: ‘宁夏’
}
]
*/
// 7.关闭链接
client.close()
})
} else {
console.log(‘库连接失败…’, err)
}
})
express+mongodb
- 数据库中的内容
//安装引入 express mongodb
const express = require(‘express’)
const mongodb = require(‘mongodb’)
// 创建服务器
app = express()
app.listen(3000)
// 创建端口
app.get(‘/api/user’, (req, res) => {
let { _page, _limit } = req.query //解构赋值
// 相当于
// let _page=req.query._page
// let _limit=req.query._limit
// console.log(typeof _page,typeof _limit)// string string 需要数字类型
// 创造实例
let mongoCt = mongodb.MongoClient
//连接
mongoCt.connect(‘mongodb://127.0.0.1:27017’, { useUnifiedTopology: true },(err, client) => {
if (!err) {
// 链接库
let db = client.db(‘student’)
// 链接集合
let user = db.collection(‘user’)
user.find({}, {
//_page 页数 _limit 一页有多少条内容
skip: (_page - 1) * _limit-0, //隐式转换 将字符串转换为 数字
limit: _limit-0,
}).toArray((err, result) => {
res.send({
err:0,
data:result
})
})
} else {
res.send(‘库连接失败…’, err)
}
})
})
- 利用
postman
测试接口
=====================================================================
封装mongodb连接库操作
- 封装
//引入 mongodb
const mongodb=require(‘mongodb’)
//实例
let mongoCt=mongodb.MongoClient
//输出
//函数参数的解构 与 函数参数的默认值的赋值
module.exports=({dbName=‘student’,collectionName,success,error,url=‘mongodb://127.0.0.1:27017’})=>{
//连接
mongoCt.connect(url, { useUnifiedTopology: true },(err, client) => {
if (!err) {
// 链接库
let db = client.db(dbName)
// 链接集合
let collection = db.collection(collectionName)
// if(success) success(user,client)
success && success(collection,client) //短路 与上一行代码相同
} else {
error && error(err) //短路
}
})
}
- 引用自定义模块
//安装引入 express mongodb 自定义模块
const express = require(‘express’)
const mongodb = require(‘./mongodb’)
// 创建服务器
app = express()
app.listen(3000)
// 创建端口
app.get(‘/api/user’, (req, res) => {
let { _page, _limit } = req.query //解构赋值
// 相当于
// let _page=req.query._page
// let _limit=req.query._limit
// console.log(typeof _page,typeof _limit)// string string 需要数字类型
mongodb({
collectionName: ‘user’,
success: (collection, client) => {
collection.find({}, {
//_page 页数 _limit 一页有多少条内容
skip: (_page - 1) * _limit - 0, //隐式转换 将字符串转换为 数字
limit: _limit - 0,
sort:{age:1,_id:-1} //排序
}).toArray((err, result) => {
res.send({
err: 0,
data: result
})
// 关闭库
client.close()
})
},
error: err => {
res.send(‘库连接失败…’, err)
}
})
})
- 测试
利用 Promise 封装mongodb连接库操作
- 封装
//引入 mongodb
const mongodb = require(‘mongodb’)
//实例
let mongoCt = mongodb.MongoClient
//函数参数的解构 与 函数参数的默认值的赋值
let open = ({ dbName = ‘student’, collectionName, success, error, url = ‘mongodb://127.0.0.1:27017’ }) => {
return new Promise((resolve, reject) => {
mongoCt.connect(url, { useUnifiedTopology: true }, (err, client) => {
if (!err) {
// 链接库
let db = client.db(dbName)
// 链接集合
let collection = db.collection(collectionName)
resolve({collection, client})
} else {
reject(err)
}
})
})
}
//输出
exports.open=open
- 引用自定义模块
//安装引入 express mongodb
const express = require(‘express’)
const mongodb = require(‘./mongodb’)
// 创建服务器
app = express()
app.listen(3000)
// 创建端口
app.get(‘/api/user’, (req, res) => {
let { _page, _limit } = req.query //解构赋值
// 相当于
// let _page=req.query._page
// let _limit=req.query._limit
// console.log(typeof _page,typeof _limit)// string string 需要数字类型
mongodb.open({
collectionName: ‘user’
}).then(({collection, client}) => {
collection.find({}, {
//_page 页数 _limit 一页有多少条内容
skip: (_page - 1) * _limit - 0, //隐式转换 将字符串转换为 数字
limit: _limit - 0,
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
存中…(img-HpQoqNAa-1711712696265)]
[外链图片转存中…(img-jXDETVzX-1711712696265)]
[外链图片转存中…(img-Ub9V8yNy-1711712696266)]
[外链图片转存中…(img-speoMGGH-1711712696266)]
[外链图片转存中…(img-cD5FQIbq-1711712696267)]
[外链图片转存中…(img-TcHBMRfs-1711712696267)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-VPQyo1sE-1711712696267)]
最后
小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
虽只说了一个公司的面试,但我们可以知道大厂关注的东西并举一反三,通过一个知识点延伸到另一个知识点,这是我们要掌握的学习方法,小伙伴们在这篇有学到的请评论点赞转发告诉小编哦,谢谢大家的支持!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)