Я пытаюсь добавить функцию удаления изображения на свой веб-сайт, и хотя мой код удаляет файл из папки изображений и удаляет запись изображения из моей базы данных, я получаю сообщение об ошибке в консоли, и меня не перенаправляют на свой домашняя страница. Ошибка:

DeprecationWarning: Calling an asynchronous function without callback is deprecated.

И мой код:

var express = require('express');
var router = express.Router();
var db = require('../helpers/db');
var fs = require('fs');

router.post('/', function(req, res, next) {

    if (req.method == 'POST') {
        var id = req.body.id;
        var path = req.body.path;
        var author = req.body.author;
        var completePath = 'public/images/uploads/' + path;

        db.query('DELETE FROM image WHERE id = ?', [id], function(error, results, fields) {
            if (error) throw error;
            if (fs.unlink(completePath)) {
                console.log('Successful');
                res.redirect('/');
            } else {
                console.log('Unsuccessful');
            }
        })

    }

});

module.exports = router;

Моя консоль регистрирует неудачно и не перенаправляет меня на res.redirect ('/');

0
Bobimaru 9 Ноя 2017 в 17:22

1 ответ

Лучший ответ

fs.unlink - это асинхронная функция, которая в случае успеха выполняет обратный вызов. Вы должны использовать это так:

db.query('DELETE FROM image WHERE id = ?', [id], function(error, results, fields) {
    if (error) throw error;
    fs.unlink(completePath,function(err) {
        if(err) {
            console.log('unsuccessful');
            return;
        }
        console.log('successful');
        res.redirect('/');
    });
})
1
Adam 9 Ноя 2017 в 14:35