gpt4 book ai didi

javascript - Bookshelfjs + bcrypt hashPassword 可以创建但不能更新

转载 作者:行者123 更新时间:2023-12-01 04:06:41 26 4
gpt4 key购买 nike

我在 bookshelfjs 中使用 bcrypt 哈希密码,当我在注册时进行插入查询时,它工作得很好,但是当我尝试更新密码时,它不会对密码进行哈希处理。

模型.js

var Bookshelf = require('../../db').bookshelf;
var bcrypt = require('bcrypt');
var Promise = require('bluebird');

// Provider model
var User = Bookshelf.Model.extend({
tableName: 'user_table',
initialize: function() {
this.on('creating', this.hashPassword, this);
},
hashPassword: function(model, attrs, options) {
return new Promise(function(resolve, reject) {
bcrypt.hash(model.attributes.password, 10, function(err, hash) {
if( err ) reject(err);
model.set('password', hash);
resolve(hash); // data is created only after this occurs
});
});
}
});
var Users = Bookshelf.Collection.extend({
model: User
});

module.exports = {
User: User,
Users: Users
};

service.js

var updateUser = function (object ,whereId, callback) {
Model.User.forge({id: whereId})
.fetch({require: true})
.then(function (user) {
user.save(object)
.then(function () {
console.log(user);
return callback(null, user);
})
.catch(function (err) {
return callback(err, null);
});
})
.catch(function (err) {
return callback(err, null);
});
};

var createUser = function (reqObject, callback) {
Model.User.forge(reqObject)
.save()
.then(function (user) {
return callback(null, user);
})
.catch(function (err) {
return callback(err, null);
});
};

更新数据时:

var dataToBeUpdated = {
password : req.body.password
};

最佳答案

将模型中的“创建”替换为“保存”即可完成工作

var User = Bookshelf.Model.extend({
tableName: 'user_table',
initialize: function() {
this.on('saving', this.hashPassword, this);
},
hashPassword: function(model, attrs, options) {
return new Promise(function(resolve, reject) {
bcrypt.hash(model.attributes.password, 10, function(err, hash) {
if( err ) reject(err);
model.set('password', hash);
resolve(hash); // data is created only after this occurs
});
});
}
});

来源:http://wesleytsai.io/2015/07/28/bookshelf-bcrpyt-password-hashing/

关于javascript - Bookshelfjs + bcrypt hashPassword 可以创建但不能更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41755249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com