Suche…


Bemerkungen

Ich würde einem Anfänger empfehlen, mit diesem Codierstil zu beginnen. Und wenn irgendjemand einen besseren Weg vorschlagen kann (ich habe mich für diese Technik entschieden und arbeitet effizient in einer App, die von mehr als 100.000 Benutzern verwendet wird), können Sie sich jederzeit für Vorschläge entscheiden. TIA.

Grundprogramm für die Anmeldung

In diesem Beispiel wird erläutert, dass der node.js- Code zur besseren Übersichtlichkeit in verschiedene Module / Ordner unterteilt wird. Wenn Sie diese Technik anwenden, können andere Entwickler den Code leichter verstehen, da er direkt auf die betreffende Datei zugreifen kann, anstatt den gesamten Code durchzugehen. Wenn Sie in einem Team arbeiten und zu einem späteren Zeitpunkt ein neuer Entwickler beitritt, wird es für ihn einfacher, den Code selbst zu finden.

index.js : - Diese Datei verwaltet die Serververbindung.

//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 : - Diese Datei verwaltet alle Konfigurationsparameter, die durchgehend gleich bleiben.

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 : - Modelldatei, in der das Schema definiert ist

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 : - Diese Datei enthält die Funktion für die Benutzeranmeldung

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 : - Dies ist die Route für den 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;

Das obige Beispiel mag zu groß erscheinen, aber wenn ein Anfänger bei node.js mit einer kleinen Mischung aus Expresswissen versucht, dies durchzugehen, wird es leicht und wirklich hilfreich sein.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow