bcrypt 哈希中可以使用冒号和下划线字符吗...?

Can colon and underscore characters be used in bcrypt hashes...?

我相信......根据一些研究,bcrypt 允许任何类型的字符被接受以进行散列......但是我正在寻找对此的一些验证。我有以下代码生成两个连续的 bcrypt 哈希值,第一个用于密码,第二个用于名称。
密码的哈希值可以正常工作。名称的散列不起作用...它将 "undefined" 写入数据库。此名称包含一些特殊字符,例如下划线 ("_") 和冒号 (":")...这些字符是否允许在哈希生成中使用?

const processes = require('./routes/processes');
namex = String(name) + String("_0:") + String(_year + _month + _day);

processes.hashPassword(password)
.then(function(hashedPassword) {
 newHash = hashedPassword;  //this works fine, returns a hash 
})
.then(processes.hashName(namex))  
.then(function(hashedName) {
 newName = hashedName;  //this returns 'undefined'...is not working...because of the special characters???
})
//code to write to database here...

如果有人需要以备将来参考,我可以使用以下代码修改来解决此问题:

const processes = require('./routes/processes');
namex = String(name) + String("_0:") + String(_year + _month + _day);

processes.hashPassword(password)
.then(function(hashedPassword) {
 newHash = hashedPassword;  //this works fine, returns a hash
 return processes.hashName(namex);  
  //NOTE:  The 'return' is CRITICAL to prevent an 'undefined' result 
  //for 'hashedName' in following '.then' statement...!!!
})
.then(function(hashedName) {
 newName = hashedName;  //this works fine, returns a hash
})
//code to write to database here... 

解决这个问题的关键是在调用后续的promise的时候添加一个'return'语句。这样做时,我设法避免了 'undefined' 结果。非常感谢这篇文章:“https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html”帮助我解决了这个问题。