在 models中添加 blog.go
,並添加博客中須要的各類字段html
type BlogModel struct {
Id string `bson:"_id"`
Title string `bson:"title"`
Summary string `bson:"summary"`
Original string `bson:"original"` //原始的markdown格式文本
Content string `bson:"content"` //渲染以後的html文本
Date time.Time `bson:"date"`
Tags []TagModel `bson:"tags"`
}
type TagModel struct {
Id string `bson:"_id"`
Name string `bson:"name"`
}
複製代碼
Go
驅動mgo
,封裝相關的方法單首創建一個文件夾 db
,並添加 mongodb.go
,經常使用的CRUD的封裝,核心代碼前端
Session
var globalS *mgo.Session
func init() {
dialInfo := &mgo.DialInfo{
Addrs: []string{host},
Timeout: timeout,
Source: authdb,
Username: user,
Password: pass,
PoolLimit: poollimit,
}
s, err := mgo.DialWithInfo(dialInfo)
if err != nil {
log.Fatal("create session error", err)
}
globalS = s
}
複製代碼
具體的封裝的代碼請參考 mgo CRUD封裝git
func connect(db, collection string) (*mgo.Session, *mgo.Collection) {
ms := globalS.Copy()
c := ms.DB(db).C(collection)
return ms, c
}
func Insert(db, collection string, docs ...interface{}) error {
ms, c := connect(db, collection)
defer ms.Close()
return c.Insert(docs...)
}
......
複製代碼
前端使用 ajax
POST數據到後臺,beego
能夠提供了一些方法獲取request中的數據 請求而數據處理 請自行查看,核心代碼
獲取原始markdown數據方法 var origin = simplemde.value();
,獲取渲染後的html格式的內容方法 var content = simplemde.markdown(origin);
github
$('#submit').click(function(){
var title = $("#blog-title").val();
var origin = simplemde.value();
var content = simplemde.markdown(origin);
if(title.length == 0){
$('#alert').show();
$('#alert').text("請輸入標題信息");
setTimeout(function(){
$("#alert").hide();
},2000)
}
if(origin.length == 0){
$('#alert').show();
$('#alert').text("請輸入具體的博客內容");
setTimeout(function(){
$("#alert").hide();
},2000)
}
$.ajax({
url:'/editor',
method:'POST',
data:{title:title,origin:origin,content:content},
success:function(data){
alert(data)
}
})
})
複製代碼
使用 GetString()
方法獲取Request中的數據ajax
func (this *EditorController) Post() {
title := this.GetString("title")
origin := this.GetString("origin")
content := this.GetString("content")
fmt.Println("post data", title, origin, content)
this.ServeJSON()
}
複製代碼
model 核心代碼mongodb
const (
database = "Blog"
collection = "BlogModel"
)
func (b *BlogModel) PostBlog(blog *BlogModel) error {
return db.Insert(database, collection, blog)
}
複製代碼
controller 核心代碼數據庫
blog := &models.BlogModel{
Id: bson.NewObjectId().Hex(),
Title: title,
Original: origin,
Content: content,
Date: time.Now(),
}
blog.PostBlog(blog)
複製代碼
完整源碼後端
測試效果圖bash