一、安装bcrypt时遇到的坑
npm install --save bcrypt
//直接安装,控制台会报错
报错内容
PS C:\studyCode\SmileVue\service> npm install --save bcrypt --registry=https://registry.npm.taobao.org
> bcrypt@4.0.1 install C:\studyCode\SmileVue\service\node_modules\bcrypt
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using needle for node-pre-gyp https download
解决方法
先全局安装 node-gyp
npm install -g node-gyp
然后再
npm install --save bcrypt
对数据进行加密操作部分代码
const mongoose = require('mongoose') //引入mongoose
const Schema = mongoose.Schema //声明Schema
let ObjectId = Schema.Types.ObjectId //声明Object类型
const bcrypt = require('bcrypt')
const SALT_WORK_FACTOR = 10 //配置加盐的位数
// 创建用户Schema
const UserSchema = new Schema({
userId:ObjectId,
userName:{unique:true,type:String},
password:String,
createAt:{type:Date,default:Date.now()},
lastLoginAt:{type:Date,default:Date.now()}
})
// 每次存储时都要执行,加盐加密
UserSchema.pre('save', function(next){
bcrypt.genSalt(SALT_WORK_FACTOR,(err,salt)=>{
if(err) return next(err)
bcrypt.hash(this.password,salt,(err,hash)=>{
if(err) return next(err)
this.password = hash
next()
})
})
})
// 发布模型2
mongoose.model('User',UserSchema)
然后执行插入语句,控制台不报错,去数据库查看一下,就加密成功啦。
附加一下,插入数据的代码
// 立即执行函数,连接数据库
;(async()=>{
await connect()
initSchemas()
const User = mongoose.model('User')
let oneUser = new User({userName:'Vue05',password:'123456'})
oneUser.save().then(()=>{
console.log('插入成功')
})
// 读取插入的数据
let users = await (await User.findOne({})).execPopulate()
console.log('---------')
console.log(users)
console.log('---------')
})()
版权声明:本文为wtyzky原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。