我正在学习如何使用Node.js构建Web应用程序并表达,所以我还没有。
所以,我在这里有一些问题。我正在建立一个登陆页面,我从我的数据库(在mysql中)获得的所有信息都将出现在一个页面中。
我将数据库中的值发送到我的布局,内置在Jade中。
我创建了多个函数来获取特定数据,这里有一个例子:
function getUser(username, userId, callback) {
connection.query('SELECT * FROM users WHERE user_id = ?', userId, function(err, result) {
if (err)
callback(err, null);
else
var callBackString = {};
callBackString.value1 = result[0].user_email;
callBackString.value2 = result[0].user_name;
callback(null, callBackString);
});
}
当用户尝试登录时,我会检查用户是否存在更改布局并向布局发送一些重要值:
router.post('/login', function(req, res) {
connection.query('SELECT user_id FROM users WHERE user_email = ? AND user_password = ?', [req.body.login, req.body.password], function(err, results) {
if (err) throw err;
if (results[0]) {
userId = results[0].user_id;
getUser("username", userId, function(err, data) {
if (err) {
console.log("ERROR : ", err);
} else {
res.render('logged_in', {
email: data.value1,
username: data.value2,
});
res.end();
}
});
} else {
res.render('index', {
validation: "failed"
});
}
});
});
我只在这里调用一个函数(getUser()),当我调用这个函数时,布局发生了变化,我发送了一些值。
但是现在我想创建一个名为getPosts()的新函数,从不同的表中获取信息,并将其发送到布局,就像我调用函数getUser()时所做的那样
我试图做这样的事情,但是我没有成功,当我把变量称为范围之外我不断得到"未定义"。
router.post('/login', function(req, res) {
connection.query('SELECT user_id FROM users WHERE user_email = ? AND user_password = ?', [req.body.login, req.body.password], function(err, results) {
if (err) throw err;
if (results[0]) {
userId = results[0].user_id;
getUser("username", userId, function(err, data) {
if (err) {
console.log("ERROR : ", err);
} else {
email = data.value1;
username = data.value2;
}
});
getPosts("posts", 1, function(err, data) {
if (err) {
console.log("ERROR : ", err);
} else {
postName = data.value1;
postText = data.value2;
}
});
res.render('logged_in', {
email: email,
username: username,
pstname: postName,
psttxt: postText
});
res.end();
} else {
res.render('index', {
validation: "failed"
});
}
});
});
我需要更改代码?谢谢。
答案 0 :(得分:1)
您应该在ModelMap
中了解asynchronization
,所以如果您更改代码,则可能会有效:
node.js