我建议你为每个服务创建一个模块,例如注册模块,产品模块,订单模块,而不是在db模块内部。那么实现数据库模块应该是这些服务的依赖关系,而不是持有者。
应该有一个像层次结构:控制器 - >服务 - >数据库模型|加密,通常低于水平不知道以上的水平。记住一个模块组的功能。
服务将保持每个活动背后的逻辑,并根据服务结果控制重定向逻辑。
喜欢的东西:
控制器/ register.js
var register = require('./service/register');
registerController.postUser = function(req, res, next){
email = req.body.email;
password = req.body.psw;
try {
register.createUser(email,pasword);
} catch(e) {
// Handle email and password validation error
// Handle attempting to create a record for existent user
// Others
res.render('singup?error', { message: 'There was an error!' });
}
//successfull implementarion
res.render('login', { message: 'User registered successfully! Please login'});
}
服务/ register.js
var crypto = require('...');
var User = require('...');
module.exports = {
createUser: function(email, psw) {
// Validating fields
if(email == undefined || psw === undefined)
throw new Error('Field not valid');
//Validating existance
if(User.findByEmail(email) == undefined) {
// Encrypting password
var pswHash = crypto.createHmac('sha256',secret).update(password).digest('hex');
//Create the user object
var user = new User({
email: email,
encryptedPassword: pswHash
});
// Save object
user.save().then(function(user) {
console.log('User created successfully');
});
}
}
}
型号/ user.js的
在这里,您可以在mongo或关系数据库上执行数据库实现。
我建议你为每个服务创建一个模块,例如注册模块,产品模块,订单模块,而不是在db模块内部。 DB模块应该是这些服务的依赖关系,而不是持有者。应该有一个层次结构,如:controller - > service - > database |加密,通常低于水平不知道以上的水平。记住一个模块组的功能。 –