检查是否正确定义了回调错误处理程序

时间:2016-08-17 16:12:06

标签: javascript node.js asynchronous error-handling

我建立了一个博客。该博客使用带有mysql模块的NodeJS与数据库进行通信。由于这是一个基本的CRUD应用程序,我想将 read update 等基本功能分解为小模块并要求他们是一个更大的。问题是我对Node没有太多经验,而且它是异步字符,所以我不知道我是否正确地实现了每个模块的回调。 (我使用Error First Callback Pattern)。

以波纹管代码为例。 (其他模块也基于该结构)

module.exports = {
    delete_author: function(author_email, callback) {
        if (typeof(callback) === 'undefined') callback = function() {};

        if (author_email != null || author_email != undefined) {
            this.pool.getConnection(function(err, connection) {
                if (err) callback(err);
                connection.query(
                    'DELETE FROM authors WHERE author_email = ?', [author_email],
                    function(err, result) {
                        connection.release();
                        if (err) {
                            callback(err);
                        } else {
                            callback(null, result);
                        }
                    }
                );
            });
        } else {
           callback(new Error('No parameter provided to delete_author call.'));
        }
    }
}

上面的模块是更大的MYSQL模块的一部分(我上面提到的那个)。

所以在app.js我输入:

var mysql = require('MYSQL');

// start a connection

mysql.delete_author('author_email@some.com', function(err, res) {
    if (err) throw err;
    // else do something here
}

我的模块结构好吗?我是否正确定义并使用了回调?我想指出这个博客每天至少有20个访问者,到目前为止我还没有看到任何奇怪的行为。

0 个答案:

没有答案