仅定义mongoose和Schema

时间:2013-12-04 15:43:26

标签: javascript node.js mongodb express

您好我正在用express和mongodb开发nodejs应用程序。所以我必须在我的所有路由js中定义mongoose和schema以使用mongo和schema。我想只定义它们。我是node.js的新手,所以请耐心等待。我的项目结构:

enter image description here

我的route.js如下所示:

var routes = function (app) {
app.locals.error=null;
app.get('/login', function (req, res) {
    return res.render(__dirname + "/views/login", {
        title: 'Giriş',
        stylesheet: 'login'
    });
});
var mongoose = require('mongoose');
mongoose.connect("mongodb://localhost/fuatblog");
var UserSchema = new mongoose.Schema({
    name: String,
    email: String,
    password: String,
    age: Number
}),

Users = mongoose.model('Users', UserSchema);
app.post('/sessions', function (req, res) {
    console.log(req.body.login.email);
    console.log(req.body.login.password);
    console.log(req.body.login.rememberMe);
    Users.find({
        email: req.body.login.email,
        password: req.body.login.password
    }, function (err, docs) {
        if (! docs.length) {
            // no results...

            console.log('User Not Found');
            res.status(400);

             return res.render(__dirname + "/views/login", {
                    title: 'Giriş',
                    stylesheet: 'login',
                    error: 'Kullanıcı adı veya şifre yanlış'
                });
        }

        console.log('User found');
        req.session.email = docs[0].email;
        console.log(req.session.email);
        return res.redirect('/Management'); 
    });
});
};

module.exports = routes;

我的server.js(app.js)

/**
* Module dependencies.
*/
////Mongoose eklendi
var express = require('express'),
mongoose= require('mongoose');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
////Cookie için eklendi.
app.use(express.cookieParser());
////Session desteği için eklendi
app.use(express.session({secret: 'asdfsdfsafasdfasdfasdf'}));
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
////Put ve Delete mothodları için
app.use(express.methodOverride());
////Requeestleri ayrıştırmak için kullanılıyor
app.use(express.bodyParser());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));


// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
////Helpers
//require('./apps/helpers')(app);
//Routes

require('./apps/authentication/routes')(app)
require('./apps/blog/routes')(app) 
require('./apps/management/routes')(app)
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});

1 个答案:

答案 0 :(得分:2)

我将假设你的意思是你只想定义一个模式ONCE。

我喜欢做的是初始化我将在服务器启动并建立mongodb连接时使用的所有模型。

理想的目录结构是这样的:

mongodb
--schemas
----user.js
--models.js

您可以将架构放在架构文件夹中,例如用户型号:

(user.js)    
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

module.exports = function() {
  var UserSchema = new mongoose.Schema({
    name: String,
    email: String,
    password: String,
    age: Number
  });

  mongoose.model("User", UserSchema);
};

在models.js中,您将拥有初始化schemas目录中每个模式模型的代码。

(models.js)    
exports.initialize = function() {
  require("fs").readdirSync(__dirname + "/schemas").forEach(function(file) {
    require('./schemas/' + file)();
  });
};

在您的app.js文件中,您将在建立与mongoose的连接后执行此调用以初始化所有模式:

require($pathToYourModelsJsFile).initialize();

在此之后,您将全部使用您的模型!您想要使用它们时所需要做的就是:

var mongoose = require('mongoose');
var User = mongoose.model('User');

// Do work
User.find();