zoukankan      html  css  js  c++  java
  • 使用express+mongoDB搭建多人博客 学习(6)发表文章

    发表文章

    1、在modules文件夹下新建post.js

    var mongodb=require("./db");
    
    function Post(name,title,post){
        this.name=name;
        this.title=title;
        this.post=post;
    }
    
    module.exports=Post;
    
    Post.prototype.save=function(callback){
        var date=new Date();
        var time={
            date:date,
            year:date.getFullYear(),
            month:date.getFullYear()+"-"+(date.getMonth()+1),
            day:date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate(),
            minute:date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getHours()+":"+(date.getMinutes()<0?'0'+date.getMinutes():date.getMinutes())
        };
    
        var post={
            name:this.name,
            time:time,
            title:this.title,
            post:this.post
        };
    
        mongodb.open(function(err,db){
            if(err){
                return callback(err);
            }
    
            db.collection("posts",function(err,collection){
                if(err){
                    mongodb.close();
                    return callback(err);
                }
                collection.insert(post,{safe:true},function(err){
                    mongodb.close();
                    if(err){
                        return callback(err);
                    }
                    callback(null);
                });
            });
        });
    };
    
    
    Post.get=function(name,callback){
        mongodb.open(function(err,db){
            if(err){
                return callback(err);
            }
            db.collection("posts",function(err,collection){
                if(err){
                    mongodb.close();
                    return callback(err);
                }
                var query={};
                if(name){
                    query.name=name;
                }
                collection.find(query).sort({time:-1}).toArray(function(err,docs){
                    mongodb.close();
                    if(err){
                        return callback(err);
                    }
                    callback(null,docs);
                });
            });
        });
    };

    2、修改index.js代码:

    2.1 引入post.js

    var express = require('express');
    var router = express.Router();
    var crypto=require('crypto');
    var User=require("../models/user.js");
    var Post=require("../models/post.js");

    2.2 

    router.get('/', function(req, res, next) {
        Post.get(null,function(err,posts){
            if(err){
                posts=[];
            }
              res.render('index', { 
                  title: '主页',error:req.flash("error").toString(),
                  success:req.flash("success").toString(),
                  user:req.session.user,
                  posts:posts
              });
        });
    });
    router.get('/post',checkLogin);
    router.get('/post',function(req,res,next){
      res.render('post', { 
          title: '发表',error:req.flash("error").toString(),
          success:req.flash("success").toString(),
          user:req.session.user 
      });
    });

    3、修改index.ejs

    <%- include header %>
    <% posts.forEach(function(post,index){ %>
    <p><h2><a href="#"><%=post.title %></a></h2></p>
    <p class="info">
        作者:<a href="#"><%=post.name %></a> | 
        日期:<%= post.time.minute %>
    </p> 
    <p><%- post.post %></p> <% }) %>
    <%- include footer%>

    使用markdown

    1 npm install markdown

    2 修改post.js

    var mongodb=require("./db");
    markdown=require('markdown').markdown;
    Post.get=function(name,callback){
        mongodb.open(function(err,db){
            if(err){
                return callback(err);
            }
            db.collection("posts",function(err,collection){
                if(err){
                    mongodb.close();
                    return callback(err);
                }
                var query={};
                if(name){
                    query.name=name;
                }
                collection.find(query).sort({time:-1}).toArray(function(err,docs){
                    mongodb.close();
                    if(err){
                        return callback(err);
                    }
                    //使用markdown
                    docs.forEach(function(doc){
                        doc.post=markdown.toHTML(doc.post);
                    });
                    callback(null,docs);
                });
            });
        });
    };
  • 相关阅读:
    Android 内存分析工具 MAT(Memory Analyzer Tool)
    google教程
    webView中支持input的file的选择和alert弹出
    记录一些容易忘记的属性 -- UIImageView
    记录一些容易忘记的属性 -- UIGestureRecognize手势
    使用苹果提供的汉字转拼音方法
    关于Xcode调试的帖子,感觉不错,转来看看
    记录一些容易忘记的属性 -- UIKeyboard
    记录一些容易忘记的属性 -- NSTimer
    记录一些容易忘记的属性 -- UIView
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/4284242.html
Copyright © 2011-2022 走看看