我正在使用es6开发节点js。 我有一个字段很少的表。我正在使用 knex js 进行查询构建和数据库管理。 我的疑问是如何通过将 req.body 对象发送到 es6 类构造函数来设置字段? 例如。
class User {
constructor(user_id, email, username, password, phone, first_name, last_name, created_at, created_by, updated_at, updated_by){
this.user_id = user_id;
this.email = email;
this.username = username;
this.password = password;
this.phone = phone;
this.first_name = first_name;
this.last_name = last_name;
this.created_at = created_at;
this.created_by = created_by;
this.updated_at = updated_at;
this.updated_by = updated_by;
}
get _user_id(){
return this.user_id;
}
set _user_id(user_id){
this.user_id = user_id;
}
get _email(){
return this.email;
}
set _email(email){
this.email = email;
}
get _username(){
return this.username;
}
set _username(username){
this.username = username;
}
get _password(){
return this.password;
}
set _password(password){
this.password = password;
}
get _phone(){
return this.phone;
}
set _phone(phone){
this.phone = phone;
}
get _first_name(){
return this.first_name;
}
set _first_name(first_name){
this.first_name = first_name;
}
get _last_name(){
return this.last_name;
}
set _last_name(last_name){
this.last_name = last_name;
}
get _created_at(){
return this.created_at;
}
set _created_at(created_at){
this.created_at = created_at;
}
get _created_by(){
return this.created_by;
}
set _created_by(created_by){
this.created_by = created_by;
}
get _updated_at(){
return this.updated_at;
}
set _updated_at(updated_at){
this.updated_at = updated_at;
}
get _updated_by(){
return this.updated_by;
}
set _updated_by(updated_by){
this.updated_by = updated_by;
}
}
export default User;
在java中,我们可以用pojo对象来做到这一点。 并使用User user = new User(arg1, arg2 ...);
在 es6 中使用上面的代码我可以做let user = new User(arg1, arg2...);
现在我可以使用
knex.insert(user).then((data) => {
}, (err) =>{
});
但是有没有更好的方法在 es6 中创建这样的对象?
我更喜欢使用普通对象,而不是将它们包装在类中。在您的示例中,您键入了 105 行代码,这些代码几乎什么都不做。而且使用原始数据比围绕它的抽象数据要容易得多。
所以基本上我的食谱是:
-
使用数据对象的类/包装器 → 使用数据对象本身
-
get myField
→object.myField
-
set myField
→object.myField = myValue
你的例子变得微不足道
knex('users')
.insert(req.body) // Or you may want to cleanup body before inserting or smth.
.returning('*')
.then((data) => {
data.password = null;
console.log('User created %j', data)
res.json(data).status(200)
})