我正在为摄影网络应用程序制作个人项目。 对于node.js来说还是非常新的并表达。
我为此应用程序构建的以前的ASP.Net MVC应用程序使用SQL数据库索引照片并自动生成必要的照片库标记。
似乎是删除数据库依赖项的好选择。
然而,我似乎对Express中间件的工作方式感到困惑。
var nodeGallery = require('node-gallery');
//
//
app.use('/', new nodeGallery({
staticFiles : 'public/photos/slideshow',
urlRoot : 'photos/slideshow',
render : false
}), function(req, res, next){
rerurn res.render('index',{slideshow:req.data});
});
app.use('/portfolio', new nodeGallery({
staticFiles : 'public/photos/portfolio',
urlRoot : 'portfolio',
render : false
}), function(req, res, next){
console.log(req.data);
return res.render('portfolio',{portfolio:req.data});
});

我想要为两个页面使用具有不同属性的节点库中间件(前面带有幻灯片和主库)。但是,无论路径如何,始终使用最后一个属性集。
使用express.Router并指定使用中间件的路由似乎也不起作用。
好像我错过了一些基本的东西。任何建议将不胜感激。
答案 0 :(得分:0)
var nodeGallery = require('node-gallery');
将此视为创建节点库的类/ obj。
然后在第一个路线中将其属性设置为:
new nodeGallery({
staticFiles : 'public/photos/slideshow',
urlRoot : 'photos/slideshow',
render : false
})
但在第二个路线中,您使用第二组属性覆盖 nodeGallery :
new nodeGallery({
staticFiles : 'public/photos/portfolio',
urlRoot : 'portfolio',
render : false
})
问题是您使用的是nodeGallery的相同实例,以定义不同属性的集合。
<强>解决方案:强>
1。创建多个节点库的对象,即:
var nodeGallery = {
slideShow: require('node-gallery'),
mainGallery: require('node-gallery'),
}
然后以nodeGaller.slideShow({staticFiles ....})
的形式访问它们2。我认为更好的解决方案是在github页面上使用推荐的方法:
app.use('/gallery', require('node-gallery')({
staticFiles : 'resources/photos',
urlRoot : 'gallery',
title : 'Example Gallery'
}));
您没有将node-gallery设置为任何一个变量,只是为该路线进行初始化。