本文共 2995 字,大约阅读时间需要 9 分钟。
首先安装两个第三方模块
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, }); });});
转载地址:http://rcclf.baihongyu.com/