簡體   English   中英

在array.map javascript中使用回調函數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM