0

Express と Mongoose を使用したノード アプリがあります。デモアプリでこの行を見たことがありますが、それがどのように機能しているのかわかりません。

app.js

require('./db.js');
require('./routes.js')(app);

db.js

exports = mongoose = require('mongoose');
mongoose.connect('localhost:27017/test');
exports = Schema = mongoose.Schema;

require('./models.js')

models.js

var ArticleSchema = new Schema({
    title       : {type : String, default : '', trim : true}
  , body        : {type : String, default : '', trim : true}
  , user        : {type : Schema.ObjectId, ref : 'User'}
  , created_at  : {type : Date, default : Date.now}
})


mongoose.model('Article', ArticleSchema);

ルート.js

var Article = mongoose.model('Article');

module.exports = function(app){

    app.get('/new', function(req, res){
        var article = new Article({});
        res.render('new', article);     
    });
};

変数 mongoose と schema は、models.js や routes.js などの他のモジュールでどのように利用できますか?

このコードexports = mongoose = require('mongoose');は、デモで見た行を、私がよく知っているこれらの行のいずれかに変更しても、引き続き機能します。

module.exports = mongoose = require('mongoose');
exports.anything = mongoose = require('mongoose');

3 つの割り当ての中間にある変数名は、他のファイルで使用できるものです。

誰かがここで何が起こっているのか、どのように機能しているのか説明できますか?

ありがとう!

4

1 に答える 1

2

これを試して:

app.js

var db = require('./db.js');
require('./routes.js')(app, db);

db.js

var mongoose;
module.exports.mongoose = mongoose = require('mongoose');
mongoose.connect('localhost:27017/test');
module.exports.Schema = mongoose.Schema;

require('./models.js')(module.exports);

models.js

module.exports = function (db) {
    var ArticleSchema = new db.Schema({
        title       : {type : String, default : '', trim : true}
      , body        : {type : String, default : '', trim : true}
      , user        : {type : db.Schema.ObjectId, ref : 'User'}
      , created_at  : {type : Date, default : Date.now}
    })

    db.mongoose.model('Article', ArticleSchema);
};

ルート.js

module.exports = function (app, db) {
    var Article = db.mongoose.model('Article');

    app.get('/new', function(req, res){
        var article = new Article({});
        res.render('new', article);     
    });
};
于 2012-08-11T10:35:42.090 に答える