[英]ExpressJS Routing with Two MongoDB Collections Query
我目前有一个建模的集合,该集合显示与模型中两个属性的查询匹配的所有文档。 这两个属性显示在我的url路径中,并通过从路由中获取两个属性并显示与这些值匹配的文档来触发生成的路由。 例如:“红色”,“日期”:“星期一”,如果显示的网址带有/ red / monday,则显示所有具有这些值的文档(图像)。 我当前的路线正确执行了此查询。
现在,我想创建第二个集合,其中包含对“颜色”和“日期”的每种可能组合的描述。 基本上,当我转到/ red / monday时,将显示图像,然后还会显示说明。
我不确定在路由内的一个查询中结合这两种组合的最佳方法。 有什么帮助吗?
图片模型:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var imageSchema = new Schema({
day: { type: String, enum: ['Monday', 'Tuesday', 'Wednesday'] },
color: { type: String, enum: ['Black', 'Blue', 'White'] },
imageName: String,
imageUrl: String,
imageSource: String
});
var Images = mongoose.model('Images', imageSchema);
module.exports = Images;
描述型号:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var descriptionSchema = new Schema({
pattern: { type: String, enum: ['Monday', 'Tuesday', 'Wednesday'] },
color: { type: String, enum: ['Black', 'Blue', 'White'] },
body: String,
});
var Description = mongoose.model('Description', descriptionSchema);
module.exports = Description;
当前路由:
var express = require('express');
var router = express.Router();
var Images = require('./models/imagesModel');
var Description = require('./models/descriptionModel');
/*==== Color Pages ====*/
router.get('/:color/day-selection', function(req, res){
console.log(req.params.color);
res.render('pages/color.hbs', {
color: req.params.pattern
});
});
/*==== Results ====*/
router.get('/:color/:day/result', function(req, res){
console.log(req.params.color);
Images.find( { pattern: req.params.color, color: req.params.day }, function(err, image){
if (err) { console.log(err); }
console.log(image);
res.render('pages/result.hbs', {
color : req.params.color,
day : req.params.day,
image : image
});
});
});
我会尝试使URL更加RESTful。
每天获取所有颜色的网址就像
route.get(':days')
=>服务GET /mondays
>获取星期一所有颜色的列表。
route.get('/days')
=>服务GET /days
route.get('/days')
>获取所有日期的列表
route.get(':days/:colors')
=>服务GET /mondays/reds
>获取星期一的红色描述。
route.get(':day/:color/images')
=>服务器获取/mondays/reds/images
>获取/mondays/reds/images
所有/mondays/reds/images
route.get(':days/:colors/images/:id')
=>服务GET :days/:colors/images/:id
=>服务于/mondays/reds/images/mongo-db-id
>得到那个特定的图像
其他一些变化,
express()
实例中。 示例,请阅读无耻的插件-https: //github.com/swarajgiri/express-bootstrap/blob/master/bootstrap/app.js#L86
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.