我正在构建一个应用程序,我需要使用Node Js中的快速js将一组标签保存到MongoDB中。
这是我用于将我的标签作为数组保存到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>
<%}%>
我希望不要错过任何东西。
如何将结果分开而不是用逗号显示?
谢谢!
答案 0 :(得分:0)
我在Quora找到了你的问题。好吧,我会在这个字段中修改memeSchema:
tags: [String]
如果有帮助,请告诉我。如果没有,请将标签[i]拆分为&#39;,&#39;
例如:
<% 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>
<%}%>
<%}%>