2017-06-19 4 views
2

Ich habe eine Route wie folgt aus:Wort für Wort in 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 
     }); 
    } 
    }); 
}); 

Bild Schema

title: String, 
    image: String, 
    description: String, 
    tags: [ 

    ] 

Wenn der Benutzer ein Bild fügt er die Möglichkeit hat, Tags, um es hinzuzufügen, ich Ich versuche ein Bild anhand seiner Tags zu finden.

Ich habe ein Suchfeld zu einer Seite hinzugefügt. Das Problem:
Ich kann nur Bilder finden, die die gleichen Tags haben.

Gibt es eine Möglichkeit, dass ich Wort für Wort suchen kann?

EDIT 1:
Hallo Leute, ich glaube nicht, ich habe das Problem richtig erklärt, ich war wirklich müde, sorry.

Das Problem 2:
Wenn ich in das Suchfeld schreiben, zum Beispiel:
"Regen Florest"

Der Wert, den ich erhielt wird, ist "Regen Florest" als Satz, aber ich möchte nach Bildern suchen, die die Tags "Regen" oder/und "Florest"

FINAL EDIT
Ich habe den Suchwert verwendet und dann auf die ausgewählte Antwort angewendet.

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

Danke Jungs !!

+1

Bitte beachten Sie auch zur Verfügung stellen der relevante Teil Ihres Bildschemas. –

+0

Ich tat es, danke –

Antwort

0

Sie können regex verwenden Unterketten in Tags wie folgt anzupassen:

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

+0

Das ist genau das, was ich gesucht habe, danke !! –

0

Try this:

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

Dies all 'Images' zurückkehren wird, dass mindestens einer der Tags in dem Array. Aber Sie wollen wahrscheinlich das Array von Abfrageparametern wie folgt erhalten:

var arrayOfTags = req.query.tags 
+0

Hallo, es hat überhaupt nicht funktioniert, aber half mir, es zu lösen, danke. –