我是node.js的新手,我想在学校项目中使用promises。 我在网上和堆栈上找到了几件事:Use promise to process MySQL return value in node.js
但我有一个问题,到目前为止,这就是我所拥有的:
router.post('/matchaSearch', function(req, res) {
var username = session.uniqueID;
var searcherPackage = {};
function userAgeCheck(randomParam) {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
var query = 'SELECT username, age, orientation, sex FROM usersinfo WHERE username != ?';
connection.query(query, [username], (err, rows, fields) => {
connection.release();
return err ? reject(err) : resolve(rows);
});
});
});
}
userAgeCheck('username')
.then((rows) => {
/*console.log(rows);*/
searcherPackage = rows;
console.log(searcherPackage);
// do stuff
}).catch((err) => {
throw err;
});
});
这对我有用,除了我(用户名)之外,它会返回db中的所有内容。但对我来说这是不对的。为什么给一个随机的参数是好的?
所以我应该提供用户名'作为param而不是' randomParam'但如果我这样做,查询将返回我的一切,而不是除了我(用户名)以外的所有人。 所以我摆脱了它,只是给了它' randomParam'它起作用了。 你能解释一下吗?我这样做了吗?如果是这样,我可以继续做我的项目。 非常感谢您的帮助!
答案 0 :(得分:1)
当您致电userAgeCheck
(userAgeCheck('username')
)时,您传递一个参数:包含单词" username"的字符串文字。这会被分配到randomParam
,然后您永远不会用户将其呈现为毫无意义。
您可以在脚本顶部定义一个变量:var username = session.uniqueID;
进行查询时,您将username
变量的值作为username != ?
的占位符值传递。
这是session.uniqueId
的值,因为它从更广泛的范围读取username
变量。
因此,您将获得所有结果,但用户名为session.uniqueId
中的用户名的除外。
如果您将randomParam
重命名为username
,则会有一个名为username
的新本地变量,其值为"username"
。
因此,您将获得所有结果,但用户名为用户名的字段除 username 。
如果您想将用户名作为参数传递,则需要将userAgeCheck('username')
更改为userAgeCheck(username)
。即用变量名替换字符串文字。