我需要截断一个表,然后等待再次开始填充,我必须实现async / await,否则将无法正常工作。
我该怎么做?我尝试在truncateCharfileWorldSaveTable
上等待并在该函数上使用async
,但我不知道如何使它工作。
async function truncateCharfileWorldSaveTable(){
let query = 'TRUNCATE charfiles_worldsave'
await db.get().query(query, function (err, result, fields) {
if (err) console.error('function truncateCharfileWorldSaveTable: ' + err);
console.info('Tabla charfiles_worldsave_temporal TRUNCATE');
});
}
exports.backupCharfiles = async function(req, res) {
try {
//Primero borramos todo el contenido de la tabla e iniciamos el proceso
await truncateCharfileWorldSaveTable()
console.info('==== INICIANDO COPIA DE CHARFILES POR WORLDSAVE ======')
let files = fs.readdirSync('./charfiles/');
files = files.filter(file => file.endsWith('.chr'));
files.forEach(writeCharfileWorldSaveTable)
res.status(200).send('Se estan guardando los charfiles en la base de datos');
} catch(err) {
console.error('function backupCharfiles: ' + err)
}
};
答案 0 :(得分:1)
等待接受回调的函数不会执行任何操作。 await
需要保证工作正常,如果要将基于回调的函数转换为Promise样式函数,util.promisfy
可能会有所帮助。
但是,还有mysql2
软件包,它非常棒。您可以要求使用mysql2/promise
而不是mysql
,这会将所有基于回调的函数转换为等待的promise样式函数。