[英]Using callback function inside array.map javascript
我正在尝试为数组中的每个用户解密密码。
router.post("/insertuser", (req, res) => {
var promises = users.map((item) => {
bcrypt.genSalt(10)
.then((salt) => {
return item
})
})
Promise.all(promises)
.then((results) => {
console.log(results)
res.json({
"data": results
})
})
})//end route
但是我得到的结果= [undefined,undefined]。
如何从bcrypt.genSalt(10).then返回数组元素
请帮忙,因为我是ES6新手
编辑:我的用户用户数组是这样的:
[{“ username”:“ admin”,“ admin”:true}]
只需从bcrypt.genSalt
返回promise。
router.post("/insertuser", (req, res) => {
var promises = users.map((item) => {
return bcrypt.genSalt(10)
.then((salt) => {
return item
})
})
Promise.all(promises)
.then((results) => {
console.log(results)
res.json({
"data": results
})
})
})//end route
在任何承诺后添加.then()
,它将直接得到解决。 在您的代码中, users.map()
将同步运行,并且users.map()
定义。 这是您可以使用的代码:
router.post("/insertuser", (req, res) => {
var promises = users.map((item) => {
return bcrypt.genSalt(10);
})
Promise.all(promises)
.then((results) => {
console.log(results)
});
})//
还要注意,盐用于生成哈希。 您只在产生盐。 为了生成密码的哈希,还添加bcrypt.hash(password,salt)
。 这是代码:
var promises = users.map((item) => {
return bcrypt.genSalt(10);
})
Promise.all(promises)
.then((results) => {
promises = results.map((item, index) => {
return bcrypt.hash(users[index], item);
});
return Promise.all(promises);
})
.then(result => {
console.log(result);
})
.catch(err => {
console.log(err);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.