使用node-mysql编写MySQL Node.js模型

我试图find一些使用node-mysql编写MySQL模型的好习惯。

以下是我到目前为止:

 var client = app.settings.client; // Client is set in Express settings var table = 'users'; var User = function() { } // Create the user with data from Facebook User.prototype.createFromFacebook = function (name, first_name, last_name, email, location, gender, facebookId, facebookToken, callback) { client.query( 'INSERT INTO ' + table + ' SET name = ?, first_name = ?, last_name = ?, email = ?, location = ?,' + ' gender = ?, facebook_id = ?, facebook_token = ?', [ name, first_name, last_name, email, location, gender, facebookId, facebookToken ], function selectCb(err, results, fields) { if(err) { callback(err); } else { callback(null, results); } } ); } // Get user with just their email address User.prototype.getByEmail = function (email, callback) { client.query( 'SELECT * FROM ' + table + ' WHERE email = ?', [ email ], function selectCb(err, results, fields) { if(err) { callback(err); } else { callback(null, results); } } ); } module.exports = User; 

任何批评或改善这将是真棒。 谢谢!

你的方式看起来很好。

确保当你得到一个错误你的回报:

 if (err) { return callback(err) } 

或者就像你在做的那样使用其他的东西。

只是为了批评,这就是我所做的:

 var db = require(__dirname + '/myDatabaseInstance.js'); var create = function (vals, next) { db.query('Insert INTO users SET ?', vals, next); }; var load = function (selector, next) { db.query('SELECT * FROM users WHERE ?', selector, function (err, vals) { if(err) { return next(err); } //at this point you could return a user object //next(new User(vals[0])); //or just return the array. next(null, vals); }); }; module.exports = create; module.exports = load; 

我这样称呼它

 var User = require(__dirname + '/user.js'); User.load({'id' : 1}, function (err, vals) { if (err) throw err; console.log(vals); }); 

我个人的偏好是不使用我的模型实例。 我发现当我有关系时,它开始变得混乱。

例如,假设您的博客中存储了与用户相关的单独表格中的post。 使用户对象有一个职位数组是诱人的。 现在如果你改变这个posts数组,你必须记得把改变的用户保存到数据库。 我一直忘记,所以我只是停止使用实例。

 Create model name abc.js with following code: var mysqlModel = require('mysql-model'); var MyAppModel = mysqlModel.createConnection({ host: 'localhost', user: 'ghgh', password: 'gfhgfh', database: 'gfhgh', }); movie = new MyAppModel({tableName: "users"}); Now use this as following : var abc = require(__dirname+'/routes/abc') movie.find('id','all', function(err, rows) { //console.log(rows) }) movie.query("SELECT * from users", function(err, rows) { }); var value ={'name': "value3"}; movie.save(value);