【问题标题】:NodeJS function not recognizing variableNodeJS函数无法识别变量
【发布时间】:2015-07-22 01:23:45
【问题描述】:

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

这是我的代码:

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);

        });

    });

});

【问题讨论】:

  • 您似乎在两个不同的地方设置了user。也许将那个匿名函数的参数称为其他东西?
  • 我刚刚注意到您的评论。感谢您留下意见。与用户发生命名冲突,我没有正确传递它。

标签: javascript node.js authentication endpoints


【解决方案1】:

这是我更正后的代码:

app.post("/api/user", function(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);

    });

});

});

【讨论】:

  • 如果您描述了您修复的问题而不是让我们不得不做一个视觉差异来弄清楚它会有所帮助。
  • 很抱歉。我将“用户”变量的名称替换为“订阅者”。这样我就可以将它注入到 findOne 函数中,以避免与用户参数发生命名冲突。
  • 请使用“编辑”按钮将其添加到您的答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2021-07-27
相关资源
最近更新 更多