gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:22:14 25 4
gpt4 key购买 nike

我正在尝试寻找一些使用 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;

对此的任何批评或改进都会很棒。谢谢!

最佳答案

作为一种改进,你可以重构你的代码

  1. 用于数据库连接的数据源对象
const db = require(__dirname + '/myDatabaseInstance.js');

  1. 创建UserSchema模型user.js定义字段、数据类型、验证规则等。

user.schema.js

{
"ID" : {
"field" : "id",
"type" : 'integer',
"validation_rules" : "onlyInteger"
},
"name" : {
"field" : "name",
"type" : "string",
"validation_rules": "usernameregex"
}
}

  1. 创建 Controller.js,您可以在其中拥有 findAll、findById、创建、更新、删除、搜索 API 方法。
 class _controller {
constructor(object, model_schema) {
this._object = object;
this._model_schema = model_schema;
}
setId(_id) {
this.id = _id;
}

validateRules(validation_rules) {
return new Promise((resolve, reject) => {
let error = {};
let validation = new Validator(this._object, validation_rules);
if (validation.fails()) {
error.type = "validation";
error.errors = validation.errors.errors;
reject(error);
} else {
resolve(true);
}
});
};

create() {
return new Promise((resolve, reject) => {
let response = {};
let error = {};
this.validation_rules=
UserSchema.getRules(this._model_schema).get_validation_rules;
this
.validateRules(this.validation_rules )
.then(validation_result => {
db.insert(this.table, this._object)
.then(result => {
response.status = 201;
resolve(response);
});

})

});
}
})
  1. 使用用户架构创建 user.js 并扩展到通用 controller.js
 class user extends _controller {
constructor(object) {
super(object, "user_schema");
this.object = object;
}
}

您可以在 user.js 代码中添加新功能。

关于mysql - 使用 node-mysql 编写 MySQL Node.js 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8389369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com