我正在尝试将请求参数发送到 express.js、backbone.js 应用程序中的 mongodb 查找的“导出”方法。我很难将参数传递给 mongodb 并使用“#”。
破坏是将参数传递到导出的 mongodb 函数中。
这是数据流:
首先,请求被成功路由到“即将到来的”函数:
"upcoming/uni/:uni" : "upcoming",
它毫无问题地流向“即将到来的”功能。
upcoming: function(uni) {
console.log("uni: "+uni);
pag.reset();
console.log("Hit upcoming list target");
setCollectionType('upcoming');
var upcomingCourses = buildCollection();
// ------------------------------------------------------------------------
// here is the problem how do I pass the parameter value through the fetch?
// Although it may also have to do with '#' please read on.
// ------------------------------------------------------------------------
upcomingCourses.fetch({success: function(){
$("#content").html(new ListView({model: upcomingCourses, page: 1}).el);
}});
this.headerView.selectMenuItem('home-menu');
},
mongo 方法的路由是:
app.get('/upcoming/uni/:uni', mongomod.findUpcoming);
所以下面的方法是从mongodb js文件中导出的,执行可靠。但是 req.params 没有通过。穿插在代码中,我已经描述了它的运行时行为:
exports.findUpcoming = function(req, res) {
console.log("university", req.params.uni); // This consistently is unpopulated
var uni = req.params.uni;
console.log("Size: "+req.params.length); // This will always be 0
for (var i=0; i < req.params.length; i++) {
console.log("Parameters: "+req.params[i]);
}
db.collection('upcoming', function(err, collection) {
if (typeof uni === 'undefined') {
console.log("The value is undefined");
uni = "Princeton University"; // here we add a string to test it it will work.
}
collection.find({university:uni}).toArray(function(err, items) {
if (err) {
console.log("Error: "+err);
} else {
console.log("No Error");
console.log("Count: "+items.length);
console.log(items[0]['university']);
res.send(items);
}
});
});
};
关于额外和重要的说明:
在工作的运行时环境中,该 url 将是:
http://localhost:3000/#upcoming/uni/Exploratorium
这个失败了,但是下面的 URL 可以通过这些函数传递参数,但是它将 JSON 返回到屏幕而不是呈现的版本:
http://localhost:3000/upcoming/uni/Exploratorium
问题可能是对 # 和模板的错误理解。请,如果您看到错误启蒙,将不胜感激。