当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 博客系统如何随机插入大量文章数据

博客系统如何随机插入大量文章数据

2020年07月14日  | 移动技术网IT编程  | 我要评论
博客系统如何随机插入大量文章数据首先安装两个第三方模块npm instal lorem-ipsum --savenpm install slug --save在 public 文件夹下新建 data.js// 随机插入大量文章数据var loremipsum = require("lorem-ipsum"), slug = require("slug"), config = require("./config/config"), glob = require("glo

博客系统如何随机插入大量文章数据

首先安装两个第三方模块

npm instal lorem-ipsum --save
npm install slug --save

public 文件夹下新建 data.js

// 随机插入大量文章数据
var loremipsum = require("lorem-ipsum"),
    slug = require("slug"),
    config = require("./config/config"),
    glob = require("glob"),
    mongoose = require("mongoose"); // 一个支持MongoDb的库

mongoose.connect(config.db);
var db = mongoose.connection;
db.on("error", function () {
    throw new Error("unable to connect to database at " + config.db);
});

var models = glob.sync(config.root + "/app/models/*.js");
models.forEach(function (model) {
    require(model);
});

var Post = mongoose.model("Post"); // 所有的文章信息保存在Post里面
var User = mongoose.model("User"); // 所有的用户信息保存在User里面
var Category = mongoose.model("Category"); // 所有的文章分类信息保存在Category里面

// 从User里面找到一条数据
User.findOne(function (err, user) {
    if (err) {
        return console.log("cannot find user");
    }

    Category.find(function (err, categories) {
        if (err) {
            return console.log("cannot find categories");
        }

        categories.forEach(function (category) {
            // 循环
            // 每个分类下面随机生成35条文章
            for (var i = 0; i < 35; i++) {
                // 随机生成一个文章标题
                var title = loremipsum({ count: 1, units: "sentence" });
                // 随机生成一个文章
                var post = new Post({
                    title: title,
                    slug: slug(title),
                    content: loremipsum({ count: 30, units: "sentence" }),
                    category: category,
                    author: user,
                    published: true,
                    meta: { favorites: 0 },
                    comments: [],
                    created: new Date(),
                });

                // 保存新建的categories
                post.save(function (err, post) {
                    console.log("saved post: ", post.slug);
                });
            }
        });
    });
});

再次运行 node data.js 即可

这么多数据如何分页

app/blog 下的 post.js 中写上以下接口

router.get('/', function (req, res, next) {
    var conditions = { published: true };

    if (req.query.keyword) {
        conditions.title = new RegExp(req.query.keyword.trim(), 'i');
        conditions.content = new RegExp(req.query.keyword.trim(), 'i');
    }

    Post.find(conditions)
        .sort('-created')
        .populate('author')
        .populate('category')
        .exec(function (err, posts) {
            if (err) return next(err);

            var pageNum = Math.abs(parseInt(req.query.page || 1, 10));
            var pageSize = 10;

            var totalCount = posts.length;
            var pageCount = Math.ceil(totalCount / pageSize);

            if (pageNum > pageCount) {
                pageNum = pageCount;
            }

            res.render('blog/index', {
                posts: posts.slice((pageNum - 1) * pageSize, pageNum * pageSize),
                pageNum: pageNum,
                pageCount: pageCount,
                pretty: true,
            });
        });
});

本文地址:https://blog.csdn.net/Cool_breeze_/article/details/107302475

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网