【问题标题】:NodeJS - Mongoose Replace Space and Lowercase WordsNodeJS - Mongoose 替换空格和小写单词
【发布时间】: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


    【解决方案1】:

    使用string 之类的包并在保存之前删除所有空格:

    var S = require('string');
    S(req.body.tags).replaceAll(' ', '');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多