私はnode.jsが新しく、私の学校プロジェクトで約束を使用したいと思います。私はいくつかのオンラインおよびスタック上の発見した :Use promise to process MySQL return value in node.js約束Node.js mysql
をしかし、私は疑問を持って、これまでのところ、これは私が持っているものである:これは私のために働いている
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'の代わりにparamとして 'username'を与えるべきですが、私がそれを行うと、クエリは私(username)以外のすべての人の代わりにすべてを返します。 だから私はそれを取り除いて、ただそれに 'randomParam'を与えて、それは働いた。 これを説明できますか?私はこの権利をしていますか?もしそうなら、私は自分のプロジェクトを続けることができます。 ありがとうございました!
引用符で囲まれたコードの 'randomParam'には目的がありません。それはあなたのコードですね。それでなぜそこにいるのですか?それは何をすべきか? –
'pool.getConnection'コールバックの' err'もチェックする必要があります。また、Bluebirdのようなライブラリを使用して、これらのメソッドを適切に連鎖させることを約束し、返された約束を自動的に拒否するようにしてください。 – cdhowie
'Promise.promisify'を使ってNode.jsスタイルのコールバックメソッドを自動的に約束に変換して、独自のラッパーを書く必要がないことを忘れないでください。 – tadman