В настоящее время я создаю приложение, в котором мне нужно сохранить массив тегов в MongoDB с помощью экспресс-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>
<%}%>
Я надеюсь, что ничего не пропустил.
Как сделать мой результат отдельным, а не отображать его через запятую?
Спасибо!