Jos*_*ith 10 mysql models node.js
我正在尝试使用编写MySQL模型的一些好方法node-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;
Run Code Online (Sandbox Code Playgroud)
对此的任何批评或改进都会很棒.谢谢!
你的方式看起来不错。
确保当您收到错误时返回:
if (err) {
return callback(err)
}
Run Code Online (Sandbox Code Playgroud)
或者像你一样使用 else 。
只是为了批评,我这样做:
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;
Run Code Online (Sandbox Code Playgroud)
我这样称呼它
var User = require(__dirname + '/user.js');
User.load({'id' : 1}, function (err, vals) {
if (err) throw err;
console.log(vals);
});
Run Code Online (Sandbox Code Playgroud)
我个人的偏好是不为我的模型使用实例。当我有了关系时,我发现事情开始变得混乱。
例如,假设您有一个博客,其中的帖子存储在与用户相关的单独表中。让 User 对象拥有一系列帖子是很诱人的。现在,如果您更改此 posts 数组,则必须记住将更改后的 User 保存到数据库中。我一直忘记,所以我就不再使用实例了。
| 归档时间: |
|
| 查看次数: |
6901 次 |
| 最近记录: |