javascript - 我的代码正在删除该文件并将其从数据库记录中删除,但是,我在控制台中收到错误

标签 javascript node.js express fs

我正在尝试向我的网站添加删除图像功能,即使我的代码从图像文件夹中删除文件并从数据库中删除图像记录,我在控制台中收到错误,但我没有得到重定向到我的主页。错误是:

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('/');

最佳答案

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('/');
    });
})

关于javascript - 我的代码正在删除该文件并将其从数据库记录中删除,但是,我在控制台中收到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204233/

相关文章:

javascript - Socket.io 错误处理

node.js - 如何将 live-reload 添加到我的 nodejs 服务器

javascript - Nodejs 将文本转换为 JSON

node.js - Bootstrap渲染空白白页-node js-express-jade

node.js - TeamCity、NodeJS 和 API 测试

javascript - 其他形式的字符

javascript - 当json数据在数组中时,如何在div中显示json数据

javascript - 如何使用 Python 从包含 Javascript 的动态网站中抓取数据?

javascript - JSON 插值

javascript - 如何在 webpack-dev-server 和express 服务器上重新加载模块?