在mongoose.find中逐字逐句
我有这样的路线:
router.get("/search/:value", function(req, res){ Imgs.find({tags: req.params.value}, function(err, f){ if(err){ console.log(err); } else { res.render("Images/index.ejs", { playlists: f }); } }); });
图像模式
title: String, image: String, description: String, tags: [ ]
当用户添加一个图像,他可以select添加标签,我试图find一个基于其标签的图像。
我已经添加了一个search框到一个页面。
问题:
我只能find具有完全相同标签的图像。
有什么方法可以逐字search吗?
编辑1:
嗨,大家好,我不认为我解释正确的问题,我真的很累,对不起。
问题2:
当我在search框中input时,例如:
“ 暴雨 ”
我会得到的价值是“ Rain Florest ”作为一个句子,但是我想search那些标签为“ Rain ”或者“ Florest ”的图片,
最终编辑
我使用了search值,然后应用到选定的答案。
var arrayOfTags = req.params.value; Imgs.find({tags: new RegExp(arrayOfTags, 'i')}, function(err, f){ if(err){ console.log(err); } else { res.render("Images/index.ejs", { user: req.user, playlists: f }); } }); });
感谢你们 !!
您可以使用regex
来匹配标签中的子string,如下所示:
router.get("/search/:value", function(req, res){ Imgs.find({tags: new RegExp(req.params.value, 'i')}, function(err, f){ if(err){ console.log(err); } else { res.render("Images/index.ejs", { playlists: f }); } }); });
尝试这个 :
var arrayOfTags=['tag1','tag2','tag3'] Imgs.find({tags: {$in : arrayOfTags}}, function(err, f){ if(err){ console.log(err); } else { res.render("Images/index.ejs", { playlists: f }); } });
这将返回至less有一个标签在数组中的所有'图像'。 但是你可能想从这样的查询参数中获取数组:
var arrayOfTags = req.query.tags