繁体   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