Node.js
Хороший стиль кодирования
Поиск…
замечания
Я бы рекомендовал начинающему начинать с этого стиля кодирования. И если кто-то может предложить лучший способ (ps, я выбрал эту технику и эффективно работаю для меня в приложении, используемом более чем 100 000 пользователей), не стесняйтесь принимать какие-либо предложения. ТИА.
Основная программа регистрации
В этом примере будет объяснено разделение кода node.js на разные модули / папки для лучшей совместимости. Следуя этому методу, разработчикам проще понять код, поскольку он может напрямую ссылаться на соответствующий файл, а не на весь код. Основное использование - это когда вы работаете в команде, а новый разработчик присоединяется к более позднему этапу, ему будет легче прилипнуть к самому коду.
index.js : - Этот файл будет управлять подключением к серверу.
//Import Libraries
var express = require('express'),
session = require('express-session'),
mongoose = require('mongoose'),
request = require('request');
//Import custom modules
var userRoutes = require('./app/routes/userRoutes');
var config = require('./app/config/config');
//Connect to Mongo DB
mongoose.connect(config.getDBString());
//Create a new Express application and Configure it
var app = express();
//Configure Routes
app.use(config.API_PATH, userRoutes());
//Start the server
app.listen(config.PORT);
console.log('Server started at - '+ config.URL+ ":" +config.PORT);
config.js : -Этот файл будет управлять всеми параметрами, связанными с конфигурацией, которые останутся такими же на всем протяжении.
var config = {
VERSION: 1,
BUILD: 1,
URL: 'http://127.0.0.1',
API_PATH : '/api',
PORT : process.env.PORT || 8080,
DB : {
//MongoDB configuration
HOST : 'localhost',
PORT : '27017',
DATABASE : 'db'
},
/*
* Get DB Connection String for connecting to MongoDB database
*/
getDBString : function(){
return 'mongodb://'+ this.DB.HOST +':'+ this.DB.PORT +'/'+ this.DB.DATABASE;
},
/*
* Get the http URL
*/
getHTTPUrl : function(){
return 'http://' + this.URL + ":" + this.PORT;
}
module.exports = config;
user.js : - Файл модели, в котором определена схема
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
//Schema for User
var UserSchema = new Schema({
name: {
type: String,
// required: true
},
email: {
type: String
},
password: {
type: String,
//required: true
},
dob: {
type: Date,
//required: true
},
gender: {
type: String, // Male/Female
// required: true
}
});
//Define the model for User
var User;
if(mongoose.models.User)
User = mongoose.model('User');
else
User = mongoose.model('User', UserSchema);
//Export the User Model
module.exports = User;
userController : - Этот файл содержит функцию для пользователя signUp
var User = require('../models/user');
var crypto = require('crypto');
//Controller for User
var UserController = {
//Create a User
create: function(req, res){
var repassword = req.body.repassword;
var password = req.body.password;
var userEmail = req.body.email;
//Check if the email address already exists
User.find({"email": userEmail}, function(err, usr){
if(usr.length > 0){
//Email Exists
res.json('Email already exists');
return;
}
else
{
//New Email
//Check for same passwords
if(password != repassword){
res.json('Passwords does not match');
return;
}
//Generate Password hash based on sha1
var shasum = crypto.createHash('sha1');
shasum.update(req.body.password);
var passwordHash = shasum.digest('hex');
//Create User
var user = new User();
user.name = req.body.name;
user.email = req.body.email;
user.password = passwordHash;
user.dob = Date.parse(req.body.dob) || "";
user.gender = req.body.gender;
//Validate the User
user.validate(function(err){
if(err){
res.json(err);
return;
}else{
//Finally save the User
user.save(function(err){
if(err)
{
res.json(err);
return;
}
//Remove Password before sending User details
user.password = undefined;
res.json(user);
return;
});
}
});
}
});
}
}
module.exports = UserController;
userRoutes.js : - Этот маршрут для userController
var express = require('express');
var UserController = require('../controllers/userController');
//Routes for User
var UserRoutes = function(app)
{
var router = express.Router();
router.route('/users')
.post(UserController.create);
return router;
}
module.exports = UserRoutes;
Вышеприведенный пример может показаться слишком большим, но если новичок в node.js с небольшой смесью экспресс-знаний попытается пройти через это, это будет легко и полезно.