Как отобразить массив в интерфейсе с помощью EJS в Mongodb Node js?

В настоящее время я создаю приложение, в котором мне нужно сохранить массив тегов в MongoDB, используя express js в Node Js.

Вот метод, который я использовал для сохранения своих тегов в виде массива в 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'); 

}

})

Моя схема Mongoose выглядит так:

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'

        }); 

    });
})   

Вот мой шаблон EJS для отображения результата:

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


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


<%}%> 

Я надеюсь, что ничего не упускаю.

Как разделить результаты вместо того, чтобы отображать их через запятую?

Спасибо!

Лучшее, что я могу предложить, - это добавить к вопросу точное значение JSON.stringify (result.map (t => t.tags)), это может помочь. Если бы я был на вашем месте (случается каждый день), я бы прошел через это с помощью отладчика, чтобы найти проблему.

Igor R 05.06.2018 02:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
1 159
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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> 

     <%}%> 
<%}%> 

Когда я применил ваше решение, оно выдает ошибку tags[i].split is not a function. @AdolfoSolis

Counter J 04.06.2018 06:27

Действительно, мой код неверен. Измените: var tags_array = tags [i]; теги_массив = теги_массив.split (',');

Adolfo Solis 12.06.2018 06:45

Я нашел решение из вашего предыдущего решения. Огромное спасибо.

Counter J 13.06.2018 07:41

но в чем была проблема? это были данные или шаблон?

Igor R 13.06.2018 13:31

Данные. Я ценю вашу помощь.

Counter J 19.06.2018 14:41

Другие вопросы по теме