2015-07-22 127 views
0

我创建了一个电子邮件检查器函数,用于在注册新用户之前验证电子邮件是否存在。我将req.body分配给用户。但是,我的电子邮件检查器函数中的新用户函数不识别变量用户。我如何将用户传递到函数中,如果电子邮件不能识别我可以创建新用户?NodeJS函数无法识别变量

这是我的代码:

app.post("/api/user", function(req, res) { 

    var user = req.body; 
    console.log("line 117", user); 

    var searchUser = { 
     email: user.email 
    }; 

    User.findOne(searchUser, function(err, user){ 
     if (err) throw err; 

     if (user) return res.status(401).send({ 
      message: "email already exists" 
     }); 

     var newUser = new User({ 
      firstName: user.firstName, 
      lastName: user.lastName, 
      email: user.email, 
      password: user.password 
     }); 

     newUser.save(function(err) { 
      createSendToken(newUser, res); 

     }); 

    }); 

}); 
+0

它看起来像你在两个不同的地方设置“用户”。也许把这个匿名函数的参数称为别的东西? –

+0

我刚刚注意到你的评论。感谢您留下意见。与用户存在命名冲突,我没有正确传递。 – mtelford

回答

0

这是我的校正代码:

app.post( “/ API /用户”,功能(REQ,RES){

var subscriber = req.body; 

var searchUser = { 
    email: subscriber.email 
}; 

User.findOne(searchUser, subscriber, function(err, user){ 
    if (err) throw err; 

    if (user) return res.status(401).send({ 
     message: "email already exists" 
    }); 

    var newUser = new User({ 
     firstName: subscriber.firstName, 
     lastName: subscriber.lastName, 
     email: subscriber.email, 
     password: subscriber.password 
    }); 

    newUser.save(function(err) { 
     createSendToken(newUser, res); 

    }); 

}); 

});

+0

如果您描述了您所固定的内容,而不是让我们必须通过视觉差异来弄清楚,那将会很有帮助。 – jfriend00

+0

对不起。我将“user”变量的名称替换为“subscriber”。这样我就可以将它注入到findOne函数中,以避免与用户参数产生的命名冲突。 – mtelford

+1

请使用“编辑”按钮将其添加到您的答案。 – jfriend00