0
bookshelfjsでbcryptハッシュパスワードを使用していますが、パスワードを更新しようとするとパスワードをハッシングしません。データを更新するにはBookshelfjs + bcrypt hashPasswordは作成時には動作しますが、更新時には動作しません。
model.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
};