我正在使用 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
});
任何关于我如何实现这一点的想法都将不胜感激。谢谢。