我建立了一个博客。该博客使用带有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个访问者,到目前为止我还没有看到任何奇怪的行为。