【发布时间】:2018-07-25 16:28:25
【问题描述】:
const userModel = connection.define('user', {
user_id: {
type: Sequelize.BIGINT,
primaryKey: true,
autoIncrement: true
},
user_name: {
type: Sequelize.STRING,
unique: true
},
email: {
type: Sequelize.STRING,
unique: true
},
password: {
type: Sequelize.STRING
}
},
{
hooks: {
beforeCreate: () =>{
console.log("hook called");
return new Promise((resolve,reject) => {
const salt = bcrypt.genSalt(10);
const passwordHash = bcrypt.hash(userModel.password, salt);
userModel.password = passwordHash;
console.log('simple pass', userModel.password);
console.log('hashed password', passwordHash);
return resolve(userModel);
});
}
}
});
它返回此错误。 钩子叫 简单的通过承诺{} 哈希密码 Promise { } 执行(默认):INSERT INTO "users" ("user_id","user_name","email","password","createdAt","updatedAt") VALUES (DEFAULT,'deaehrddjelltariq','ddehreejd@gmail.com' ,'abcd','2018-02-15 00:17:51.272 +00:00','2018-02-15 00:17:51.272 +00:00') 返回 *; (节点:13686)UnhandledPromiseRejectionWarning:错误:非法参数:未定义,对象 在 _async (/Users/mfaisal/NodeProjects/chaffer/node_modules/bcryptjs/dist/bcrypt.js:214:46) 在 /Users/mfaisal/NodeProjects/chaffer/node_modules/bcryptjs/dist/bcrypt.js:223:17 在新的承诺 () 在 Object.bcrypt.hash (/Users/mfaisal/NodeProjects/chaffer/node_modules/bcryptjs/dist/bcrypt.js:222:20) 在 Promise (/Users/mfaisal/NodeProjects/chaffer/models/user.js:29:37) 在新的承诺 () 在 Function.beforeCreate (/Users/mfaisal/NodeProjects/chaffer/models/user.js:27:14) 在 Promise.each.hook (/Users/mfaisal/NodeProjects/chaffer/node_modules/sequelize/lib/hooks.js:130:35) 在 tryCatcher (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/util.js:16:23) 在 Object.gotValue (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/reduce.js:155:18) 在 Object.gotAccum (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/reduce.js:144:25) 在 Object.tryCatcher (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/util.js:16:23) 在 Promise._settlePromiseFromHandler (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/promise.js:512:31) 在 Promise._settlePromise (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/promise.js:569:18) 在 Promise._settlePromiseCtx (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/promise.js:606:10) 在 Async._drainQueue (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/async.js:138:12) 在 Async._drainQueues (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/async.js:143:10) 在 Immediate.Async.drainQueues (/Users/mfaisal/NodeProjects/chaffer/node_modules/bluebird/js/release/async.js:17:14) 在 runCallback (timers.js:756:18) 在 tryOnImmediate (timers.js:717:5) 在 processImmediate [as _immediateCallback] (timers.js:697:5) (节点:13686)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。 (拒绝编号:1) (节点:13686)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
【问题讨论】:
-
请看我得到了“console.log('simple pass, userModel.password);”的“simple pass Promise { }”和密码哈希类似。
标签: node.js hook sequelize.js bcrypt