useUnifiedTopology: true
},
(err, client) => {
if (err) {
console.error(‘mongodn connect error’, err)
return
}
console.log(‘mongodb connect success’)
// 切换到数据库
const db = client.db(dbName)
// 关闭连接
client.close()
}
)
3、文档(Document)的操作
查询文档
const MongoClient = require(‘mongodb’).MongoClient
const url = ‘mongodb://localhost:27017’
const dbName = ‘mydb’
MongoClient.connect(
url,
{
useUnifiedTopology: true
},
(err, client) => {
if (err) {
console.error(‘mongodn connect error’, err)
return
}
console.log(‘mongodb connect success’)
const db = client.db(dbName)
// 使用集合
const usersCollection = db.collection(‘students’)
// ------- 文档的操作代码写在此部分,之后将不再包含连接部分代码 -------
// 查询文档
usersCollection.find({ // find() 内不写内容则为查询全部文档
“name” : “Axton”
}).toArray((err, res) => {
if (err) {
console.error(err)
return
}
console.log(res)
// find() 为异步操作,为了使查询完后在关闭数据,所以放至此位置
client.close()
})
// -------------------------------------------------------------
}
)
插入文档
// 插入一条数据, 插入多条可以选择 insertMany()
usersCollection.insertOne({
name: ‘Jack’,
sex: ‘男’,
age: 21
}, (err, res) => {
if (err) {
console.error(err)
return
}
console.log(res)
client.close()
})
更新文档
// 更新一条数据, 更新多条可以选择 updateMany()
usersCollection.updateOne(
{name: ‘Jack’}, // 查询条件
{$set: {info: ‘女装’}}, // 更新的内容
(err, res) => {
if (err) {
console.error(err)
return
}
console.log(res)
client.close()
}
)
删除文档
// 删除一条数据, 删除多条可以选择 deleteMany()
usersCollection.deleteOne({
name: ‘Jack’
}, (err, res) => {
if (err) {
console.error(err)
return
}
console.log(res)
client.close()
})
4、说明
mongodb 是偏底层一点的插件,此处学习使用此插件是为了让大家了解连接 mongodb 的一些原理。在日常中,为了利于项目开发,通常使用 mongoose 插件
七、Node.js 中使用 mongoose 插件连接数据库
1、说明
由于 mongodb 的数据格式过于灵活,容易导致多人开发时数据格式出错,使用 mongoose 可以更加规范的使用数据.
重要名词和操作
- Schema 定义数据格式的规范
- 以 Model 规范 Collection
- 规范数据操作的 API
2、初始化环境
安装 mongoose 插件
npm i mongoose --save
目录结构
mongoose-test
├── package-lock.json
├── package.json
├── node_modules
└── src
├── db.js
├── models
│ └── Student.js
└── test
└── student.js
3、创建连接服务
db.js
const mongoose = require(‘mongoose’)
const url = ‘mongodb://localhost:27017’
const dbName = ‘myblog’
mongoose.connect(${url}/${dbName}
, {
useUnifiedTopology: true,
useNewUrlParser: true
})
const db = mongoose.connection // 将连接对象赋给 db
// 发送错误
db.on(‘error’, err => {
console.error(err)
})
// 连接成功
db.on(‘open’, () => {
console.log(‘success!’)
})
module.exports = mongoose
4、定义 Schema 规范和创建模型
models/Students.js
// 对应 students 集合
const mongoose = require(‘…/db’)
// 用 Schema 定义数据规范
const StudentSchema = mongoose.Schema({
name: {
type: String,
required: true,
unique: true
},
sex: String,
age: Number
}, {
timestamps: true // 时间戳, 在插入、更新数据后将会加上相应的时间数据
// 在每一条文档中加入 createdAt 和 updatedAt
})
// Model 对于 Collection
const Student = mongoose.model(‘student’, StudentSchema)
module.exports = Student
5、文档(Document)的操作
test/students.js
查询文档
const Student = require(‘…/models/Student’)
// 自执行的异步函数
!(async () => {
// 查询文档
const res = await Student.find({
name: ‘Axton’
})
// 用正则表达式模糊查询文档
const res2 = await Student.find({
name: /A/
})
// 根据 ID 查询单条文档
const res3 = await Student.findById(‘5fb2247e6469170600f02551’)
})()
插入文档
const Student = require(‘…/models/Student’)
!(async () => {
// 插入文档
const res = await Student.create({
name: ‘Jack’,
age: 21,
sex: ‘男’
})
})()
更新文档
const Student = require(‘…/models/Student’)
!(async () => {
// 更新文档
const res = await Student.findOneAndUpdate(
{name: ‘Jack’}, // 查询的条件
{sex: ‘女’},
{
new: true // 返回修改之后的内容,默认为 fasle
}
)
})(
删除文档
const Student = require(‘…/models/Student’)
!(async () => {
// 删除文档
const res = await Student.findOneAndDelete({
name: ‘Jack’
})
})()
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。
什么?你问面试题资料在哪里,这不是就在你眼前吗(滑稽
扫码获取!!(备注:前端)**
最后
基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。
什么?你问面试题资料在哪里,这不是就在你眼前吗(滑稽
资料领取方式:戳这里获取