开始学习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关于从模块导出的更多信息。 –
太棒了!谢谢你的回答!这清理了很多。 –