開始學習node.js和backbone.js,並使用TodoMVC示例作爲我的指南。有幾個部分我有麻煩纏繞我的頭。見下文。瞭解TodoMVC示例
這裏是app.js.
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:
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:
(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));
所以我的問題是,如何在貓鼬的 '待辦事項' 模式.model('Todo')在此範圍內可用的路線模塊中?我看到模型模塊正在導出mongoose.model('Todo',TodoSchema);所以我必須相信這是路由模塊如何訪問它,但我不知道爲什麼。我錯過了什麼?我有一種感覺,就是在這種情況下它不完全理解範圍。另外,我不確定讓路由功能匿名的原因。
非常感謝!
非常感謝!這清理了很多。但是,如果我註釋掉'module.exports = mongoose.model(「藤」,TodoSchema);'在models.js,應用程序失敗說「架構尚未註冊模式‘待辦事項’」難道這是爲了將來需要貓鼬而需要的嗎? –
對不起,更清晰,你需要'mongoose.model(「藤」,TodoSchema')'的一部分。這就是用貓鼬註冊模型並使其隨後可用的那一點。我的意思是你可以跳過'module.exports ='部分,因爲你沒有使用你正在導出的內容。此外,你會想用'exports.todoModel = ...'如果你想更多的車型添加到.js文件並導出所有的人,看到http://stackoverflow.com/questions/5311334/what-is - 目的 - nodejs-module-exports-how-do-you-use-it/12907839#12907839關於從模塊導出的更多信息。 –
太棒了!謝謝你的回答!這清理了很多。 –