当前位置: 首页 > news >正文

一些工具的使用

dotenv

在 package.json 的同级目录下创建 .env 文件

# index.js
PORT=5001
... ...

通过 process.env.xxx 读取:

// index.js
import dotenv from 'dotenv'
dotenv.config()
const PORT = process.env.PORT

也可以直接导入 dotenv/config

// index.js
import 'dotenv/config'
const PORT = process.env.PORT

Mongoose

验证是否连接成功:

// db.js
import mongoose from 'mongoose'export const connectDB = async () => {try {const conn = await mongoose.connect(process.env.MONGODB_URL)console.log(`MongoDB connected: ${conn.connection.host}`);} catch (error) {console.log(`MongoDB connected error: ${error}`);}
}
// index.js
app.listen(PORT, () => {console.log('server is running on port:' + PORT);connectDB()
})

输出 MongoDB connected… 代表连接成功

在这里插入图片描述
定义模式与模型

import mongoose from 'mongoose'const userSchema = new mongoose.Schema({email: {type: String,required: true,unique: true},... ...}, { timestamps: true }
)const User = mongoose.model('User', userSchema)export default User

// 增加一条
const newUser = await User.create({email,fullName,password: hashPassword
})
// 增加多条
// const users = await User.create([{...}, {...}])
// save方式
// const user = new User({...}).save()


const upadteUser = await User.findByIdAndUpdate(userId, { profilePic: result.secure_url }, { new: true })

配置项:

  • new: true 返回修改后的数据


可搭配select一起使用

// 查询满足条件的第一条文档
const user = await User.findOne({ email })// 通过id查询
const user = await User.findById(payload.userId).select("-password")
const user = await User.findById(payload.userId).select("fullName email profile")// 查询多个
const filtersUsers = await User.find({ _id: { $ne: loginUserId } })

比较操作符:

  • $ne(≠,not equal)
  • $eq(=,equal)
  • $gt(>,greater than)
  • $gte(≥,greater than or equal)
  • $lt(<,less than)
  • $lte(≤,less than or equal)
  • $in(in array)
  • $nin(not in array)

逻辑类

  • $or(或)
  • $and(与)
  • $not(非)
  • $nor(都不)

bcrypt

将密码转为哈希值后再存入数据库

import bcrypt from 'bcryptjs
// 注册时
const hashPassword = await bcrypt.hash(password, 12)

在这里插入图片描述
登录时,从数据库中取出哈希密码值与用户输入的密码对比是否一致

const isOk = await bcrypt.compare(password, user.password)

jsonwentoken

签发

import jwt from 'jsonwebtoken'
const token = jwt.sign({ userId }, process.env.JWT_SECRET, { expiresIn: '7d' })

验证

// 返回的payload就是上面jwt.sign传进去的{ userId }
const payload = jwt.verify(token, process.env.JWT_SECRET)

cookieParser

在响应头中设置cookie

res.cookie('jwt', token, {maxAge: 7 * 24 * 60 * 60 * 1000,httpOnly: true,sameSite: 'strict',secure: process.env.NODE_ENV !== 'development'
})

从请求头中读取cookie

// 注意!是cookies.jwt,不是cookie.jwt
const token = req.cookies.jwt

cloudinary

配置

import { v2 as cloudinary } from 'cloudinary'cloudinary.config({ cloud_name: process.env.CLOUTINARY_CLOUD_NAME,api_key: process.env.CLOUTINARY_API_KEY,api_secret: process.env.CLOUTINARY_API_SECRET
})export default cloudinary

上传

cloudinary.uploader.upload(profilePic, async (err, result) => {if(err)  return res.status(500).json({ message: 'cloudinary上传profilePic失败' })// 返回更新后的数据await User.findByIdAndUpdate(userId, { profilePic: result.secure_url }, { new: true })
})

后续学到再补充~

http://www.dtcms.com/a/574452.html

相关文章:

  • MATLAB多子种群混沌自适应哈里斯鹰算法优化BP神经网络回归预测
  • 红外体温产品开发踩坑后,我发现谷德 0.05℃精度的红外体温芯片居然自带免费算法?
  • 周口师范做网站好的网站建设网
  • 无锡网站wordpress 3.8.1
  • 巫山做网站哪家强wordpress 升级提示
  • 探索 MCP 生态与边缘智能体部署的家常话
  • 商城网站建设推广手机网站特效代码
  • MIT-0-1背包问题
  • AI+近红外:实现粮食质量快速检测的智能化升级——从单指标到多指标同步预测的技术飞跃
  • 注册电气工程师报考条件网站优化 套站
  • 兰州大学网页与网站设计最好玩的网站
  • wap建站系统创意设计工作室
  • MCU单片机驱动WS2812,点亮RGB灯带各种效果
  • 公司的服务器能建设网站吗网站如何做移动适配
  • 嘉兴做网站优化多少钱网站搜索引擎友好性
  • 正规网站建设公司哪家好wordpress js被挂木马
  • 贵州省建设厅网站查合肥网站排名优化公司
  • 什么是接口测试?为什么要做接口测试?
  • 淘宝网站制作教程北京网站建设东轩seo
  • 无锡公司建立网站佛山企业用seo策略
  • 24.系统日志查看方法与实战
  • WordPress软件连接不了网站宁波建设监理协会网站
  • 网站网络安全怎么做如何提高网站百度权重
  • Openmetadata数据质量管理-新增自定义测试类型
  • 49-基于ZigBee的室内甲醛监测系统设计与实现
  • 一文读懂稳态太阳光模拟器
  • 云南建站推广南通网站seo服务
  • 网站配色绿色微商商城系统开发
  • 仓颉编程语言基础集合类型详解:HashSet深度解析
  • 无代码网站开发网页怎么生成长图