[英]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.