在NodeJS中的函数之间传递variables

我正在关注这个( YouTube链接 )节点教程,因为我必须为朋友构build一个Web应用程序。 他需要使用Dynamo DB和节点j,我正在学习,而我build立这个应用程序,我做得很好,但现在我卡住了。

我正在尝试获取JWT令牌(如video中提到的),但没有任何反应。 这是我的路线:

router.post('/authenticate', (req, res, next) => { const username = req.body.username; const password = req.body.password; USER.getUserByUsername(username, (err, user) => { if (err) throw err; if (!user) { return res.json({ success: false, "msg": "User not found" }); } User.comparePassword(password, user.password, (err, isMatch) => { if (err) throw err; if (isMatch) { const token = jwt.sign(user, secret.secret, { expiresIn: 86400 }); res.json({ success: true, token: 'JWT ' + token, user: { user: user.username, password: user.password, email: USER.email } }); } }); }); }); 

这是护照js代码

 module.exports = function (passport) { let opts = {}; opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt'); opts.secretOrKey = secret; passport.use(new JwtStrategy(opts, (jwt_payload, done) => { USER.getUserbyUsername(jwy_payload.user2, (err, user) => { if (err) { return done(err, false); } if (user) { return done(null, user); } else { return done(null, false); } }); })); } 

这里是模型user.js中的函数

 module.exports.getUserByUsername = function (user, callback) { var docClient = new AWS.DynamoDB.DocumentClient(); var params = { TableName: "Usuarios", KeyConditionExpression: "#us = :uuuu", ExpressionAttributeNames: { "#us": "username" }, ExpressionAttributeValues: { ":uuuu": user } }; docClient.query(params, function (err, data) { if (err) { console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); } else { data.Items.forEach(function (item) { console.log(item.username + ": " + item.password); let user = item.username; console.log(user); return user; }); } }); } 

最后一个函数打印用户名+密码,所以查询正在工作,但就是这样,通过邮递员传递用户名和密码后,我没有任何反应。

多谢你们!

看来你不是调用callback

  docClient.query(params, function (err, data) { if (err) { console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); } else { data.Items.forEach(function (item) { console.log(item.username + ": " + item.password); let user = item.username; console.log(user); return user; }); } });