node.jsとbackbone.jsを学習し始め、TodoMVCの例を参考にしています。私は頭を包み込むのに問題があります。下記参照。TodoMVCを理解する例
ここはapp.jsです
var mongoose = require('mongoose'),
TodoSchema = new mongoose.Schema({
title: { 'type': String, 'default': 'empty todo...' },
order: { 'type': Number },
done: { 'type': Boolean, 'default': false }
});
module.exports = mongoose.model('Todo', TodoSchema);
アンディは最終的に、ここに./routesです:
var express = require('express')
, http = require('http')
, mongoose = require('mongoose')
, models = require('./models')
, routes = require('./routes')
, app = express();
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(require('stylus').middleware({ src: __dirname + '/public' }));
app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
});
app.configure('development', function() {
app.use(express.errorHandler());
});
routes.init(app);
mongoose.connect("127.0.0.1", "todomvc", 27017);
http.createServer(app).listen(3000);
console.log("Express server listening on port 3000");
相続人は./modelsある
ので(function (exports) {
"use strict";
var mongoose = require('mongoose')
, crudUtils = require('../utils/crudUtils')
, Todo = mongoose.model('Todo');
function index(req, res) {
res.render('index', { 'title': 'Backbone.js, Node.js, MongoDB Todos' });
}
exports.init = function (app) {
app.get('/', index);
crudUtils.initRoutesForModel({ 'app': app, 'model': Todo });
};
}(exports));
私の質問ですが、どのようにあるマングースの '藤堂' モデルこのスコープで利用可能なroutesモジュールの.model( 'Todo')?モデルモジュールがmongoose.model( 'Todo'、TodoSchema)をエクスポートしています。ルートモジュールがどのようにそのモジュールにアクセスできるかは信じていますが、理由はわかりません。私は何が欠けていますか?私は、この状況における範囲の完全な理解ではないと感じています。また、ルートを匿名で機能させる理由がわかりません。
多くの感謝!
ありがとうございます!それは多くをクリアします。しかし、私が 'module.exports = mongoose.model( 'Todo'、TodoSchema);をコメントアウトすると、models.jsの中で、"スキーマはモデル 'Todo'に登録されていません。将来、マングースを必要とするためには、そのスキーマが利用可能である必要がありますか? –
申し訳ありませんが、明確にするために、 'mongoose.model( 'Todo'、TodoSchema ')'の部分が必要です。これは、モデルをモンゴーズに登録し、それを後で利用できるようにするビットです。あなたがエクスポートしているものを使用していないので、 'module.exports ='部分をスキップすることができます。また、.jsファイルにモデルを追加してそれらをすべてエクスポートする場合は、 'exports.todoModel = ...'を使用することをお勧めします(http://stackoverflow.com/questions/5311334/what-isを参照)。モジュールからのエクスポートの詳細については、12907839#12907839の「目的のノードモジュールモジュールのエクスポートと使用方法」を参照してください。 –
素晴らしい!お返事ありがとう!それは多くをクリアします。 –