【发布时间】:2017-05-17 20:04:53
【问题描述】:
我是 node.js 的新手,我想在我的学校项目中使用 Promise。 我在网上和堆栈上找到了一些东西: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;
});
});
这对我有用,它会从数据库中返回除我(用户名)之外的所有内容。但对我来说这是不对的。为什么给一个随机参数是好的?
所以我应该将“用户名”作为参数而不是“随机参数”,但如果我这样做,查询将返回所有内容而不是除我之外的所有人(用户名)。 所以我摆脱了它,只是给了它'randomParam'并且它起作用了。 你能解释一下吗?我这样做对吗?如果是这样,我可以继续做我的项目。 非常感谢您的帮助!
【问题讨论】:
-
引用代码中的
randomParam没有任何用途。这是你的代码,不是吗?那么它为什么会存在呢?它应该做什么? -
您还需要在您的
pool.getConnection回调中检查err。或者,更好的是,使用像 Bluebird 这样的库并承诺这些方法,以便您可以正确链接它们,并让任何错误自动拒绝返回的承诺。 -
别忘了
Promise.promisify可用于将 Node.js 风格的回调方法自动转换为 Promise,因此您不必编写自己的包装器。 -
@T.J.Crowder 是的,这是我的代码,目的是从数据库中获取除我之外的所有人(用户已连接)。
-
@pkerckho:它没有达到这个目的。
username似乎正试图达到这个目的。再说一遍:你没有在任何地方使用过randomParam,所以上面的内容完全没有意义。
标签: javascript mysql node.js