मैं वर्तमान में एक ऐप बना रहा हूं जहां मुझे नोड जेएस में एक्सप्रेस जेएस का उपयोग करके मोंगोडीबी में टैग की एक सरणी सहेजने की ज़रूरत है।

यहाँ वह तरीका है जिसका उपयोग मैंने अपने टैग को MongoDB में एक सरणी के रूप में सहेजने के लिए किया था।

app.post('/upload', upload.single('meme'), function (req, res) {
    if (req.file) {

//upload to cloudinary. 
cloudinary.v2.uploader.upload(req.file.path, {use_filename: true, folder: 'test'},
    function(error, result) {
//get the image name
var filePath = req.file.originalname; 

//instantiate the meme schema
var newMeme = new meme(); 

newMeme.imgs = filePath; 

//get the caption form field value 
newMeme.caption = req.body.caption;  

//get the tags value from the form field. 

newMeme.tags = req.body.tags.replace(/\s/g,'').split(',');

//cloudinary url
newMeme.url = result.url

//encrypt the filepath 
newMeme.memeid = hash.unique(filePath); 


newMeme.save(function(err){

 if (err) throw err; 

}); 

res.cookie('filename',newMeme.url);

//return res.send('sucessfully uploaded');

res.redirect('meme/'+newMeme.memeid);

}); 

}else{
//throw error message
return res.send('failed to upload'); 

}

})

मेरा नेवला स्कीमा इस तरह दिखता है:

var memeSchema = mongoose.Schema ({

imgs: String,       
id: Number,
memeid: String, 
favorites: Number,
url: String,  
caption: String, 
username: String,
tags: [],  
uploadDate: { type: Date, default: Date.now }
});  

सहेजने के बाद, मेरा डीबी ऐसा कुछ दिखता है:

 "tags": [
        "Suprised",
        "Laughing"
    ], 

अब जब मैं टैग प्रदर्शित करना चाहता हूं, तो मुझे परिणामों को ठीक से प्रस्तुत करने में समस्या हो रही है।

मेरा वांछित परिणाम उन्हें प्रत्येक परिणाम के चारों ओर लिंक रैप के साथ प्रदर्शित करना है, अल्पविराम के साथ नहीं।

उदाहरण के लिए: <a href="/tags/suprised"> Surprised </a> <a href="/tags/Laughing"> Surprised </a>

मुझे यह परिणाम मिल रहा है: <a href="/tags/Suprised,Laughing"> Surprised, Laughing </a>

मैं चाहता हूं कि वे अलग हों।

परिणाम प्रदर्शित करने के लिए यह मेरा मार्ग है:

meme.find().sort(url).exec(function(err, result) { 
    //meme.find().sort({url}, function(err, result){

        if (err) throw err; 
        res.render('pages/index', {

            user: req.user, 
            pathi: result.map(i => i.memeid),
            path: result.map(u => u.url),
            caption: result.map(c => c.caption),
            tags: result.map(t => t.tags),  
            Title: 'Meme Search Engine'

        }); 

    });
})   

परिणाम प्रदर्शित करने के लिए मेरा ईजेएस टेम्पलेट यहां दिया गया है:

 <% for(var i=0; i<tags.length; i++) { %>


      <a href="tags/<%= tags[i] %>"> <%= tags[i] %> </a> 


<%}%> 

मुझे आशा है कि कुछ भी याद नहीं है।

अल्पविराम से प्रदर्शित करने के बजाय मैं अपना परिणाम अलग कैसे करूँ?

धन्यवाद!

1
Counter J 3 जून 2018, 15:51

1 उत्तर

सबसे बढ़िया उत्तर

मुझे आपका प्रश्न Quora में मिला। खैर, मैं इस क्षेत्र में memeSchema को संशोधित करूंगा:

tags: [String] 

यदि इससे सहायता मिलती है तो मुझे बताएं। यदि नहीं, तो टैग [i] को ',' से विभाजित करें

उदाहरण के लिए:

 <% for(var i=0; i<tags.length; i++) { 
       var tags_array = tags[i];
       tags_array = tags_array.split(',');
       for(var j = 0; j < tags_array.length; j++){%>


      <a href="tags/<%= tags_array[j] %>"> <%=  tags_array[j] %> </a> 

     <%}%> 
<%}%> 
0
Adolfo Solis 12 जून 2018, 07:47