对象上下文在函数内部丢失

时间:2018-12-21 19:19:08

标签: javascript node.js mongodb express mongoose

router.get("/", function(req, res, next) {
    axios.get('https://www.behance.net/v2/users/user/projects/4889175?api_key=' + 'API')
    .then(function(response) {
      var data = response.data.projects;

      for(var i=0;i < data.length; i++) {
        Behance.findOne({ name: data[i].name }, function(err, user) {
          if (err) { return next(err); }
          if (!user) {
            console.log(this.name);
            // var newBehance = new Behance({
            //   name: this.name,
            // });
            // newBehance.save(next);
          }
        });
      }
    })
    .catch(function(error) {
      console.log(error);
    });
});

我正在从Behance的项目及其API中提取项目,并尝试使用findOne将每个项目保存到DB中(如果尚不存在)。在for循环data[i].name内部返回一个值,但是在findOne函数内部返回未定义。

我似乎不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

我认为问题在于您要注销index.html而不是this.name。据我所知,data[i].namethis

您可以使用window来简化一些事情:

.forEach