我的问题是在运行第二个 app.get 之前我无法弄清楚如何获取“name”参数。第一个(app.get /)让我在集合之间进行选择,我将“name”参数传递给第二个应用程序获取,然后我可以在第二个应用程序.get 中使用 req.params.name 获取...
问题是我在第二个 app.get 之前需要那个参数,因为我需要定义一个模式并“编译”一个模型,这只能完成一次。当我单击一次时可以工作,但是当我再次单击时出现“无法覆盖模型,已编译”错误。每次我加载第二个 app.get 时,我通过打开一个新连接绕过了这个问题(我知道不好)。
因此,如果有人知道如何获取该“名称”参数(在实际的第二个 app.get 启动之前,我作为 req.param 传递给第二个 app.get 的东西,将不胜感激)
我的代码:(2天前开始学习节点,除了express和mongoose,更不用说javascript sp对我来说很容易:p)
var express = require('express')
,routes = require('./routes')
,user = require('./routes/user')
,http = require('http')
,path = require('path')
,mongoose = require("mongoose");
var app = express();
// all environments
app.set('port', process.env.PORT || 3005);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
conn = mongoose.createConnection("mongodb://10.42.1.31/dominik");
app.get ("/", function(req, res) {
conn.db.collectionNames(function (err, docs) {
res.render("collections", {names:docs});
});
});
app.get("/collections/:name", function (req,res) {
conn = mongoose.createConnection("mongodb://10.42.1.31/dominik");
var collName = req.params.name;
collName = collName.charAt(0).toUpperCase()+collName.slice(1);
collName = collName.substring(0, collName.length-1);
var schema = new mongoose.Schema({});
var myModel= conn.model(collName, schema);
myModel.find({},function(err, docs) {
res.json("documents",docs);
});
});
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});