欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-10 09:38:41
博客系统如何随机插入大量文章数据首先安装两个第三方模块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