【发布时间】:2015-05-14 19:37:13
【问题描述】:
我正在尝试使用 mongoose 创建一个标记系统,但我发现的问题是我能够将逗号分隔的项目保存到一个数组中,但是如果我包含一个空格,则该空间被保存并且不会被替换一个连字符。我不确定使用正则表达式解决此问题的最佳方法是什么。我正在寻找的最终产品是,
在字段中输入的标签:
标签:test, cow, farm yard
并将其显示为:
标签:test,cow,farm yard
路线如下:
/tag/test
/tag/cow
/tag/farm-yard
以下是我记录模式值(到数组)的方式:
var mongoose = require('mongoose');
var mongoosePaginate = require('mongoose-paginate');
var Schema = mongoose.Schema;
var BlogPostSchema = new Schema({
title: { type: String, unique: true },
featureImage: String,
blogUrl: String,
content: String,
tags: { type: Array, lowercase: true },
date: { type: Date, default: Date.now() }
});
BlogPostSchema.post('init', function (post) {
var date = new Date(post.date || Date.now() );
post.dateString = date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear();
});
BlogPostSchema.plugin( mongoosePaginate );
var Blogpost = mongoose.model("Blogpost", BlogPostSchema);
module.exports = mongoose.model('Blogpost', BlogPostSchema);
这是我在路线中发布记录的方式(使用 trim 方法):
router.route('/admin/posts/create')
// START POST method
.post(function(req, res) {
console.log("New instance");
console.log(req.body.tags);
var blogpost = new Blogpost(); // create a new instance of a Blogpost model
blogpost.title = req.body.title; // set the blog title
blogpost.featureImage = req.body.featureImage; // set the blog image
blogpost.blogUrl = blogpost.title.toLowerCase().replace(/\s+/g,"-");
blogpost.content = req.body.content; // set the blog content
blogpost.tags = req.body.tags.trim().split(","); // set the tags
//Save Blog Post
blogpost.save(function(err) {
if (err)
res.send(err);
res.redirect(303, '/'); //NEEDS TO BE CHANGED
});
}) // END POST method
最后,这是我在视图中将标签显示为链接的方式:
<h3 class="blog-date"><%= blogpost.dateString %></h3>
<h3 class="blog-category"><%= blogpost.category %></h3>
<h3 class="blog-tagline"><i><%= blogpost.tagline %></i></h3>
<p><%- blogpost.content %></p>
<% for(var i=0; i<blogpost.tags.length; i++) { %>
<p>Tags:<a href="/tag/<%= blogpost.tags[i] %>"><%= blogpost.tags[i] %></a></p>
<% } %>
最终结果显示为循环中不正确的单个标签,包括空格,非连字符空格:
<p>Tags:<a href="/tag/test">test</a></p>
<p>Tags:<a href="/tag/ cow"> cow</a></p>
<p>Tags:<a href="/tag/farm yard">farm yard</a></p>
【问题讨论】:
标签: node.js mongodb express routes mongoose