javascript - Mongoose 模型如何在不导出的情况下工作

标签 javascript node.js mongodb express

用户.server.model.js

var mongoose=require('mongoose'),
    Schema=mongoose.Schema;
var UserSchema=new Schema({
    firstName:String,
    lastName:String,
    email:String,
    username:String,
    password:String
});
mongoose.model('User',UserSchema);

mongoose.js 文件

var config=require('./config'),
    mongoose=require('mongoose');
module.exports=function()
{
    var db=mongoose.connect(config.db);
 require('../app/models/user.server.model');

    return db;
}

user.server.controller.js 文件

var User=require('mongoose').model('User');
exports.create=function(req,res,next)
{
    var user=new User(req.body);
    user.save(function(err){
        if(err){
            return next(err);
        }else{
            res.json(user);
        }
    });
}

用户.server.routes.js

var users=require('../../app/controllers/users.server.controller');
module.exports=function(app){
    app.route('/users').post(users.create).get(users.list);
}

express.js

var config=require('./config');
var express=require('express');
var morgan=require('morgan');
var compress=require('body-parser');
var bodyParser=require('body-parser');
var session=require('express-session');
var methodOverride=require('method-override');
module.exports=function(){
    var app=express();
    if(process.env.NODE_ENV=='development')
    {
            app.use(morgan('dev'));
    }
    else if(process.env.NODE_ENV==='production')
    {
        app.use(compress());
    }
    app.use(bodyParser.urlencoded({extended:true}));
    app.use(bodyParser.json());
    app.use(methodOverride());
    app.use(session({
                        saveUninitialized: true,
                        resave: true,
                        secret: config.sessionSecret
            }));
    app.set('views','./app/views');
    app.set('view engine','ejs');
    require('../app/routes/index.server.routes.js')(app);
    require('../app/routes/users.server.routes.js')(app);
    app.use(express.static('./public'));
    return app; 
}

服务器.js

process.env.NODE_ENV=process.env.NODE_ENV || 'development';
var mongoose=require('./config/mongoose');
    express=require('./config/express');
var db=mongoose();
var app=express();

app.listen(3000,function(){

    console.log('Listening on port '+3000 +" MODE "+process.env.NODE_ENV);
})

module.exports=app;

我没有从 user.server.model.js 文件中导出 mongoose 模型,user.server.controller.js 如何知道 mongoose 模型架构?如果我在 mongoose.js 文件中评论此 {require('../app/models/user.server.model')} 行,用户架构会给出架构未定义的错误? 它工作正常,但解释一下这个例子是如何工作的。带有问题的完整代码 示例取自作者 Amos Q.Haviv 第 5 章中的 Mean Web Development。

最佳答案

您不需要 mongoose.js,而是 user.server.model.js 中的 mongoose 模块。 您可以在模式文件中使用 module.exports,但您不想这样做,或者需要 mongoose.js

var mongoose = require('./mongoose');

关于javascript - Mongoose 模型如何在不导出的情况下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32841248/

相关文章:

javascript - jQuery 延迟加载 - 显示问题 :none

javascript - NodeJS/Javascript 在不同数组中查找具有相同属性的对象

mongodb - 如何在Kettle中过滤Mongodb INPUT时传递变量

javascript - 本地存储 : Textarea showing "undefined" on refresh

javascript - 在 React Router 中,我如何路由到具有不同参数的 2 个相似的 url

c# - 动态添加TinyMCE编辑器到文本框

javascript - 如何解决在node.js中移动文件时的路径问题?

mysql - 将数据插入表时出现 tafal 错误后无法对查询进行排队

mongodb - 如何确保 mongoDB 中仅填充两个字段之一

javascript - meteor 动态分类列表