在mongoose.find中逐字逐句

时间:2017-06-19 06:30:52

标签: javascript node.js express mongoose

我有这样的路线:

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: [

    ]

当用户添加图片时,他可以选择添加标签,我正在尝试根据标签找到图像。

我在页面上添加了一个搜索框。

问题:
我只能找到具有完全相同标签的图像。

有什么方法可以逐字搜索吗?

编辑1:
嗨伙计们,我不认为我正确解释了问题,我真的很累,抱歉。

问题2:
当我在搜索框中书写时,例如:
Rain Florest

我将得到的值是“ Rain Florest ”作为一个句子,但我想搜索带有“ Rain ”或/和“”的标签的图像 Florest

最终编辑
我使用了搜索值,然后应用于所选答案。

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
      }); 
    }
  });
});  

谢谢你们!!

2 个答案:

答案 0 :(得分:1)

您可以使用regex来匹配标签中的子字符串,如下所示:



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
      }); 
    }
  });
});




答案 1 :(得分:0)

试试这个:

 var arrayOfTags = req.query.tags

这将返回所有'图像'在阵列中至少有一个标签。但您可能希望从查询参数中获取数组,如下所示:

{{1}}