Node.JS + Express.JS + Multer を使用してファイルのアップロードを処理しています。問題は、データベースにクエリを実行して、この名前のファイルが過去にアップロードされたかどうかを確認する必要があることです。アップロードされていない場合は、承認する必要があります。それ以外の場合、ファイルは受け入れられません。onFileUploadStart 関数を使用してこれを機能させようとしています。ただし、データベース クエリは非同期であり、クエリの結果がコールバックに表示されることを考えると、false を返す方法がわかりません。クエリを同期的に実行する方法があれば、私の目標は簡単に達成できます。コードは次のとおりです。
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var connection = mysql.createConnection({
//connection details
});
router.post('/upload', multer({
onFileUploadStart: function(file, req, res) {
var queryString = "SELECT count(fileName) as count FROM table WHERE fileName = ?;",
queryInserts = [file.originalname];
queryString = mysql.format(queryString, queryInserts);
connection.query(queryString, function(err, rows) {
if (err) {
// handle error
} else {
if (rows[0].count > 0) {
// file should not be accepted
} else {
// file should be accepted
}
}
});
},
dest: "./uploads/"
}), function(req, res) {
// do other stuff
});
これをどのように達成できるかについてのアイデアは大歓迎です。ありがとう。