Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
44585f62fb |
38
README.md
38
README.md
@ -1,20 +1,20 @@
|
|||||||
# blog-server
|
# blog-server
|
||||||
#### 目录结构
|
#### 目录结构
|
||||||
- bin 基础文件存放
|
- bin 基础文件存放
|
||||||
~~~
|
~~~
|
||||||
mongobd.js 链接mongodb基础 和 对于mongodb操作封装
|
mongobd.js 链接mongodb基础 和 对于mongodb操作封装
|
||||||
router.js 对于路由文件引入
|
router.js 对于路由文件引入
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
- controllers 路由文件存放
|
- controllers 路由文件存放
|
||||||
~~~
|
~~~
|
||||||
admin.js 后台管理路由
|
admin.js 后台管理路由
|
||||||
article.js 文章操作路由
|
article.js 文章操作路由
|
||||||
grouping.js 分组路由
|
grouping.js 分组路由
|
||||||
label.js 标签路由
|
label.js 标签路由
|
||||||
login.js 登录路由
|
login.js 登录路由
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
- description 说明文档
|
- description 说明文档
|
||||||
|
|
||||||
[mongodb.js](http://git.luyuan.tk/pplokijuhyg/blog-server/src/branch/master/description/mongodb.js.md)
|
[mongodb.js](http://git.luyuan.tk/pplokijuhyg/blog-server/src/branch/master/description/mongodb.js.md)
|
@ -1,47 +1,47 @@
|
|||||||
const fs = require("fs")
|
const fs = require("fs")
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
|
|
||||||
function addMapping(router, mapping) {
|
function addMapping(router, mapping) {
|
||||||
for (var url in mapping) {
|
for (var url in mapping) {
|
||||||
if (url.startsWith('GET ')) {
|
if (url.startsWith('GET ')) {
|
||||||
var path = url.substring(4);
|
var path = url.substring(4);
|
||||||
router.get(path, mapping[url]);
|
router.get(path, mapping[url]);
|
||||||
// console.log(`register URL mapping: GET ${path}`);
|
// console.log(`register URL mapping: GET ${path}`);
|
||||||
} else if (url.startsWith('POST ')) {
|
} else if (url.startsWith('POST ')) {
|
||||||
var path = url.substring(5);
|
var path = url.substring(5);
|
||||||
router.post(path, mapping[url]);
|
router.post(path, mapping[url]);
|
||||||
// console.log(`register URL mapping: POST ${path}`);
|
// console.log(`register URL mapping: POST ${path}`);
|
||||||
} else {
|
} else {
|
||||||
console.log(`invalid URL: ${url}`);
|
console.log(`invalid URL: ${url}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function addControllers(router, controllers_dir) {
|
function addControllers(router, controllers_dir) {
|
||||||
let ostype = os.type() == "Windows_NT"
|
let ostype = os.type() == "Windows_NT"
|
||||||
let dir;
|
let dir;
|
||||||
if (ostype) {
|
if (ostype) {
|
||||||
dir = __dirname.replace("\\bin", "")
|
dir = __dirname.replace("\\bin", "")
|
||||||
} else {
|
} else {
|
||||||
dir = __dirname.replace("/bin", "")
|
dir = __dirname.replace("/bin", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
var files = fs.readdirSync(dir + "/" + controllers_dir);
|
var files = fs.readdirSync(dir + "/" + controllers_dir);
|
||||||
var js_files = files.filter((f) => {
|
var js_files = files.filter((f) => {
|
||||||
return f.endsWith('.js');
|
return f.endsWith('.js');
|
||||||
});
|
});
|
||||||
|
|
||||||
for (var f of js_files) {
|
for (var f of js_files) {
|
||||||
// console.log(`process controller: ${f}...`);
|
// console.log(`process controller: ${f}...`);
|
||||||
let mapping = require(dir + `/${controllers_dir}/` + f);
|
let mapping = require(dir + `/${controllers_dir}/` + f);
|
||||||
addMapping(router, mapping);
|
addMapping(router, mapping);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.exports = function (dir) {
|
module.exports = function (dir) {
|
||||||
let
|
let
|
||||||
controllers_dir = dir || 'controllers', // 如果不传参数,扫描目录默认为'controllers'
|
controllers_dir = dir || 'controllers', // 如果不传参数,扫描目录默认为'controllers'
|
||||||
router = require('koa-router')();
|
router = require('koa-router')();
|
||||||
addControllers(router, controllers_dir);
|
addControllers(router, controllers_dir);
|
||||||
return router.routes();
|
return router.routes();
|
||||||
// return 1;
|
// return 1;
|
||||||
};
|
};
|
||||||
|
@ -1,146 +1,146 @@
|
|||||||
// title 文章标题 contern 文章内容
|
// title 文章标题 contern 文章内容
|
||||||
// 获取所有文章列表
|
// 获取所有文章列表
|
||||||
var articlefind = async (ctx, next) => {
|
var articlefind = async (ctx, next) => {
|
||||||
let articlelist=[];
|
let articlelist=[];
|
||||||
let tags=[]
|
let tags=[]
|
||||||
|
|
||||||
await dbs.find("articlelists").then(async (res) => {
|
await dbs.find("articlelists").then(async (res) => {
|
||||||
let articlelists=res.data
|
let articlelists=res.data
|
||||||
await dbs.find("group").then((res)=>{
|
await dbs.find("group").then((res)=>{
|
||||||
let groups=res.data
|
let groups=res.data
|
||||||
// 遍历 group表,检测 传入的groupid是不是在 group表中存在
|
// 遍历 group表,检测 传入的groupid是不是在 group表中存在
|
||||||
// 如果不在,就返回所有文章
|
// 如果不在,就返回所有文章
|
||||||
// 如果在group表中,就返回该分组的文章
|
// 如果在group表中,就返回该分组的文章
|
||||||
for(let i in groups){
|
for(let i in groups){
|
||||||
if(parseInt(ctx.query.groupid)==groups[i].num_key){
|
if(parseInt(ctx.query.groupid)==groups[i].num_key){
|
||||||
// console.log(groups[i])
|
// console.log(groups[i])
|
||||||
// 判断 该分组是不是最后一层的分组 如果不是返回所有文章
|
// 判断 该分组是不是最后一层的分组 如果不是返回所有文章
|
||||||
// 如果是最后一层,(即没有 children),就返回该分组的文章 也就是 articlelist 的初始值
|
// 如果是最后一层,(即没有 children),就返回该分组的文章 也就是 articlelist 的初始值
|
||||||
if(groups[i].fuid!=0){
|
if(groups[i].fuid!=0){
|
||||||
for(let m in articlelists){
|
for(let m in articlelists){
|
||||||
if(articlelists[m].groupid==parseInt(ctx.query.groupid)){
|
if(articlelists[m].groupid==parseInt(ctx.query.groupid)){
|
||||||
articlelist.push(articlelists[m])
|
articlelist.push(articlelists[m])
|
||||||
}
|
}
|
||||||
// articlelist.push()
|
// articlelist.push()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(articlelist.length==0){
|
if(articlelist.length==0){
|
||||||
articlelist=articlelists
|
articlelist=articlelists
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// articlelist = res.data
|
// articlelist = res.data
|
||||||
|
|
||||||
await dbs.find("articletag").then( async (res)=>{
|
await dbs.find("articletag").then( async (res)=>{
|
||||||
// 给articlelist 添加tag字段 从articletag表中取出每个文章的对应tagid
|
// 给articlelist 添加tag字段 从articletag表中取出每个文章的对应tagid
|
||||||
for(let i in articlelist){
|
for(let i in articlelist){
|
||||||
|
|
||||||
for(let m in res.data){
|
for(let m in res.data){
|
||||||
// console.log(res.data[m].articleid,articlelist[i].num_key,res.data[m].tagid)
|
// console.log(res.data[m].articleid,articlelist[i].num_key,res.data[m].tagid)
|
||||||
if(res.data[m].articleid==articlelist[i].num_key){
|
if(res.data[m].articleid==articlelist[i].num_key){
|
||||||
// console.log(res.data[m].articleid,articlelist[i].num_key,res.data[m].tagid)
|
// console.log(res.data[m].articleid,articlelist[i].num_key,res.data[m].tagid)
|
||||||
// console.log(res.data[m].articleid)
|
// console.log(res.data[m].articleid)
|
||||||
// console.log(res.data[m].articleid,res.data[m].tagid)
|
// console.log(res.data[m].articleid,res.data[m].tagid)
|
||||||
// tags.push([res.data[m].articleid])
|
// tags.push([res.data[m].articleid])
|
||||||
tags.push(res.data[m].tagid)
|
tags.push(res.data[m].tagid)
|
||||||
articlelist[i].tag=tags
|
articlelist[i].tag=tags
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
tags=[]
|
tags=[]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log(tags)
|
// console.log(tags)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// articlelist的tag已经写入 tagid了,根据 label表 把tagid转化成labelname
|
// articlelist的tag已经写入 tagid了,根据 label表 把tagid转化成labelname
|
||||||
await dbs.find("label").then((res)=>{
|
await dbs.find("label").then((res)=>{
|
||||||
for(let i in articlelist){
|
for(let i in articlelist){
|
||||||
for(let m in articlelist[i].tag){
|
for(let m in articlelist[i].tag){
|
||||||
console.log(articlelist[i].tag[m])
|
console.log(articlelist[i].tag[m])
|
||||||
for(let n in res.data){
|
for(let n in res.data){
|
||||||
// label的num_key 和articlelist 的tagid比对
|
// label的num_key 和articlelist 的tagid比对
|
||||||
if(res.data[n].num_key==articlelist[i].tag[m]){
|
if(res.data[n].num_key==articlelist[i].tag[m]){
|
||||||
articlelist[i].tag[m]=res.data[n].lablename
|
articlelist[i].tag[m]=res.data[n].lablename
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
ctx.body=articlelist
|
ctx.body=articlelist
|
||||||
})
|
})
|
||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
// 添加文章
|
// 添加文章
|
||||||
// 参数: title 文章标题, content 文章内容 tags 选择的标签id 形式: 1,2, group 分组id
|
// 参数: title 文章标题, content 文章内容 tags 选择的标签id 形式: 1,2, group 分组id
|
||||||
var articleadd = async (ctx, next) => {
|
var articleadd = async (ctx, next) => {
|
||||||
let articleid=0
|
let articleid=0
|
||||||
let month=parseInt(new Date(Date.now()).getMonth())+1
|
let month=parseInt(new Date(Date.now()).getMonth())+1
|
||||||
// await dbs.add("articletag",{articleid:ctx.query.articleid,tagid:ctx.query.tagid})
|
// await dbs.add("articletag",{articleid:ctx.query.articleid,tagid:ctx.query.tagid})
|
||||||
await dbs.add("articlelists", { articletitle:ctx.request.body.title, date: new Date(Date.now()).getFullYear ()+ '/' + month+ '/' + new Date(Date.now()).getDate() + ' ' + new Date(Date.now()).getHours() + ':' + new Date(Date.now()).getMinutes() + ':' + new Date(Date.now()).getSeconds(),content:ctx.request.body.content,uid:1,groupid:ctx.request.body.groupid})
|
await dbs.add("articlelists", { articletitle:ctx.request.body.title, date: new Date(Date.now()).getFullYear ()+ '/' + month+ '/' + new Date(Date.now()).getDate() + ' ' + new Date(Date.now()).getHours() + ':' + new Date(Date.now()).getMinutes() + ':' + new Date(Date.now()).getSeconds(),content:ctx.request.body.content,uid:1,groupid:ctx.request.body.groupid})
|
||||||
|
|
||||||
|
|
||||||
await dbs.find("label").then(async (res)=>{
|
await dbs.find("label").then(async (res)=>{
|
||||||
// console.log(res.data)
|
// console.log(res.data)
|
||||||
await dbs.find("idadd").then((res)=>{
|
await dbs.find("idadd").then((res)=>{
|
||||||
// console.log(res)
|
// console.log(res)
|
||||||
for(let i in res.data){
|
for(let i in res.data){
|
||||||
// console.log(res.data[i].set)
|
// console.log(res.data[i].set)
|
||||||
if(res.data[i].set=='articlelists'){
|
if(res.data[i].set=='articlelists'){
|
||||||
console.log(res.data[i].num_key-1,"article")
|
console.log(res.data[i].num_key-1,"article")
|
||||||
articleid=res.data[i].num_key-1
|
articleid=res.data[i].num_key-1
|
||||||
// 取 文章id: 从 idadd表 取 set=articlelsits 的 numkey-1就是 新文章的id
|
// 取 文章id: 从 idadd表 取 set=articlelsits 的 numkey-1就是 新文章的id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
let tags=ctx.request.body.tags.split(",")
|
let tags=ctx.request.body.tags.split(",")
|
||||||
for(let i in tags){
|
for(let i in tags){
|
||||||
// console.log(tags[i])
|
// console.log(tags[i])
|
||||||
for(let m in res.data){
|
for(let m in res.data){
|
||||||
// console.log(res.data[m].num_key,parseInt(tags[i]))
|
// console.log(res.data[m].num_key,parseInt(tags[i]))
|
||||||
if(res.data[m].num_key==parseInt(tags[i])){
|
if(res.data[m].num_key==parseInt(tags[i])){
|
||||||
console.log(res.data[m].lablename,77774)
|
console.log(res.data[m].lablename,77774)
|
||||||
// 比对 label的num_key 和 传进来的tagsid 相等就往articletag写入 记录 文章id和标签id
|
// 比对 label的num_key 和 传进来的tagsid 相等就往articletag写入 记录 文章id和标签id
|
||||||
await dbs.add("articletag",{articleid:articleid,tagid:parseInt(tags[i])})
|
await dbs.add("articletag",{articleid:articleid,tagid:parseInt(tags[i])})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
console.log(ctx.request.body)
|
console.log(ctx.request.body)
|
||||||
ctx.body = "添加成功"
|
ctx.body = "添加成功"
|
||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
// 删除文章
|
// 删除文章
|
||||||
var articledel=async(ctx,next)=>{
|
var articledel=async(ctx,next)=>{
|
||||||
await dbs.remove("articlelists",{num_key:parseInt(ctx.query.key)}).then((res)=>{
|
await dbs.remove("articlelists",{num_key:parseInt(ctx.query.key)}).then((res)=>{
|
||||||
console.log(res)
|
console.log(res)
|
||||||
console.log(ctx.query)
|
console.log(ctx.query)
|
||||||
})
|
})
|
||||||
ctx.body="删除成功"
|
ctx.body="删除成功"
|
||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
// 修改文章
|
// 修改文章
|
||||||
var articleupdate=async (ctx,next)=>{
|
var articleupdate=async (ctx,next)=>{
|
||||||
let month=parseInt(new Date(Date.now()).getMonth())+1
|
let month=parseInt(new Date(Date.now()).getMonth())+1
|
||||||
|
|
||||||
await dbs.update("articlelists",{num_key:parseInt(ctx.query.key)},{articletitle:ctx.query.title, udate: new Date(Date.now()).getFullYear ()+ '/' + month+ '/' + new Date(Date.now()).getDate() + ' ' + new Date(Date.now()).getHours() + ':' + new Date(Date.now()).getMinutes() + ':' + new Date(Date.now()).getSeconds()})
|
await dbs.update("articlelists",{num_key:parseInt(ctx.query.key)},{articletitle:ctx.query.title, udate: new Date(Date.now()).getFullYear ()+ '/' + month+ '/' + new Date(Date.now()).getDate() + ' ' + new Date(Date.now()).getHours() + ':' + new Date(Date.now()).getMinutes() + ':' + new Date(Date.now()).getSeconds()})
|
||||||
ctx.body="修改成功"
|
ctx.body="修改成功"
|
||||||
next()
|
next()
|
||||||
// console.log(new Date(Date.now()).getFullYear ()+ '/' + month+ '/' + new Date(Date.now()).getDate() + ' ' + new Date(Date.now()).getHours() + ':' + new Date(Date.now()).getMinutes())
|
// console.log(new Date(Date.now()).getFullYear ()+ '/' + month+ '/' + new Date(Date.now()).getDate() + ' ' + new Date(Date.now()).getHours() + ':' + new Date(Date.now()).getMinutes())
|
||||||
// console.log(new Date(Date.now()).getDate())
|
// console.log(new Date(Date.now()).getDate())
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
'POST /articleadd': articleadd,
|
'POST /articleadd': articleadd,
|
||||||
'GET /articlefind': articlefind,
|
'GET /articlefind': articlefind,
|
||||||
'GET /articledel': articledel,
|
'GET /articledel': articledel,
|
||||||
'POST /articleupdate': articleupdate
|
'POST /articleupdate': articleupdate
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user