【问题标题】:Word by word in mongoose.find在 mongoose.find 中逐字逐句
【发布时间】:2017-06-19 06:30:52
【问题描述】:

我有这样的路线:

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”或/和“ 小花"

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

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

谢谢你们!!

【问题讨论】:

  • 请同时提供您的图像架构的相关部分。
  • 我做到了,谢谢

标签: javascript node.js express mongoose


【解决方案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
      }); 
    }
  });
});

【讨论】:

  • 这正是我想要的,谢谢!!
【解决方案2】:

试试这个:

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

这将返回数组中至少包含一个标签的所有“图像”。但是你可能想从这样的查询参数中获取数组:

 var arrayOfTags = req.query.tags

【讨论】:

  • 你好,根本没用,不过帮我解决了,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 2018-07-21
  • 2013-03-20
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
相关资源
最近更新 更多