在我的应用程序中,我有这个userService类。在这里,我创建了generateAuthToken方法。把它放在服务中是个好主意吗?还是我应该与服务分开,并将其作为util函数包含到util文件中?
import jwt from 'jsonwebtoken';
import config from 'config';
import bcrypt from 'bcrypt';
import _ from 'lodash';
import { User } from '../models/user';
import { userRepository } from '../repositories/userRepository';
class UserService {
generateAuthToken(user) {
const token = jwt.sign({ _id: user._id, isAdmin: user.isAdmin }, config.get('jwtPrivateKey'));
return token;
}
/**
* Create new user
*/
async createNewUser(userDTO) {
let user = await userRepository.getUserByEmail(userDTO.email);
if (user)
throw new Error('Email already exists');
user = new User(_.pick(userDTO, ['name', 'email', 'password']));
const salt = await bcrypt.genSalt(10);
user.password = await bcrypt.hash(user.password, salt);
userRepository.saveUser(user);
return user;
}
/**
* Login user
*/
async loginUser(userDTO) {
let user = await userRepository.getUserByEmail(userDTO.email);
if (!user)
throw new Error('Invalid email or password');
const validPassword = await bcrypt.compare(userDTO.password, user.password);
if (!validPassword)
throw new Error('Invalid email or password');
return user;
}
async getCurrentUser() {
}
}
export const userService = new UserService();
答案 0 :(得分:1)
这完全取决于您!如果您认为在其他地方需要它,则将其粘贴到库中,否则可以将其保留在原处,并在需要时进行重构。
当我刚开始使用这些东西时,我曾经迷住了东西应该去哪里,但是在看了很多其他代码之后,我意识到有很多方法可以在js中实现东西。
我个人会尽量做到直截了当,以便那些不得不维护我的代码(包括我在内)的人们不必担心晦涩难懂或对粒子物理学有一定的了解。
一个人的简洁就是另一个人的复杂:)