Skip to content

Commit

Permalink
feat(v1.0.0): 新增列表接口分页、模糊查询逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
dev-zuo committed Jan 11, 2023
1 parent 8d4fa90 commit 1ae9bc7
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 86 deletions.
102 changes: 53 additions & 49 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const path = require("path");
const app = new Koa();
const router = new KoaRouter();
const mongodbCore = require("./mongodb/mongodb.js");
const { shortLinkDb } = require('./mongodb/dao.js')
const { shortLinkDb } = require("./mongodb/dao.js");

app.use(bodyParser()); // 处理 post 请求参数

Expand All @@ -15,12 +15,12 @@ app.use(bodyParser()); // 处理 post 请求参数
* 作者:一只正在成长的程序猿
* 链接:https://juejin.cn/post/6844904042196533255
*/
app.use(async (ctx, next)=> {
ctx.set('Access-Control-Allow-Origin', '*');
ctx.set('Access-Control-Allow-Headers', '*');
ctx.set('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
if (ctx.method == 'OPTIONS') {
ctx.body = 200;
app.use(async (ctx, next) => {
ctx.set("Access-Control-Allow-Origin", "*");
ctx.set("Access-Control-Allow-Headers", "*");
ctx.set("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS");
if (ctx.method == "OPTIONS") {
ctx.body = 200;
} else {
await next();
}
Expand All @@ -32,73 +32,77 @@ app.use(async (ctx, next)=> {
// app.use(mpServer.verifyToken()); // token 校验中间件

// 连接 mongodb,初始化 db
mongodbCore.init({dbName: 'zuo-config'})
mongodbCore.init({ dbName: "zuo-config" });

router.get("/shortLink/list", async (ctx) => {
console.log('ctx.query', ctx.query)
try {
let list = await shortLinkDb.getList()
ctx.body = {
code: 0,
data: {
queryText: ctx.query.queryText,
list,
total: 0
},
msg: '成功',
};
} catch(e) {
ctx.body = {code: -10001, msg: '获取短链接列表失败', plainMsg: e.message };
}
console.log("ctx.query", ctx.query);
let { queryText, currentPage, pageSize } = ctx.query;
try {
let {list, total} = await shortLinkDb.getList(queryText, {
pageSize: parseInt(pageSize),
pageIndex: parseInt(currentPage),
});
ctx.body = {
code: 0,
data: {
queryText: ctx.query.queryText,
list,
total
},
msg: "成功",
};
} catch (e) {
ctx.body = { code: -10001, msg: "获取短链接列表失败", plainMsg: e.message };
}
});

router.post("/shortLink/add", async (ctx) => {
console.log(ctx.request.body)
console.log(ctx.request.body);
try {
let insertResult= await shortLinkDb.add(ctx.request.body)
let insertResult = await shortLinkDb.add(ctx.request.body);
ctx.body = {
code: 0,
data: {
insertResult
insertResult,
},
msg: '成功',
msg: "成功",
};
} catch(e) {
ctx.body = {code: -10001, msg: '新增短链接配置失败', plainMsg: e.message };
} catch (e) {
ctx.body = { code: -10001, msg: "新增短链接配置失败", plainMsg: e.message };
}
})
});

router.post("/shortLink/edit", async (ctx) => {
console.log(ctx.request.body)
console.log(ctx.request.body);
try {
let updateResult = await shortLinkDb.edit(ctx.request.body)
let updateResult = await shortLinkDb.edit(ctx.request.body);
ctx.body = {
code: 0,
data: {
updateResult
updateResult,
},
msg: '成功',
msg: "成功",
};
} catch(e) {
ctx.body = {code: -10001, msg: '修改短链接配置失败', plainMsg: e.message };
} catch (e) {
ctx.body = { code: -10001, msg: "修改短链接配置失败", plainMsg: e.message };
}
})
});

router.post("/shortLink/del", async (ctx) => {
let { id } = ctx.request.body
let { id } = ctx.request.body;
try {
let deleteResult = await shortLinkDb.del(id)
let deleteResult = await shortLinkDb.del(id);
ctx.body = {
code: 0,
data: {
deleteResult
deleteResult,
},
msg: '成功',
msg: "成功",
};
} catch(e) {
ctx.body = {code: -10001, msg: '删除短链接配置失败', plainMsg: e.message };
} catch (e) {
ctx.body = { code: -10001, msg: "删除短链接配置失败", plainMsg: e.message };
}
})
});

// router.get("/goods/get", async (ctx) => {
// ctx.body = {
Expand All @@ -111,10 +115,10 @@ router.post("/shortLink/del", async (ctx) => {
// });

router.post("/user/edit", async (ctx) => {
ctx.body = {
code: 0,
msg: '修改成功',
};
ctx.body = {
code: 0,
msg: "修改成功",
};
});

app.use(router.routes()).use(router.allowedMethods());
Expand All @@ -123,4 +127,4 @@ app.listen(5000, () => console.log(`服务监听 ${5000} 端口`));
// 作者:做前端的左小白
// 链接:https://juejin.cn/post/7070921715492061214
// 来源:稀土掘金
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
96 changes: 59 additions & 37 deletions src/mongodb/dao.js
Original file line number Diff line number Diff line change
@@ -1,44 +1,66 @@
const mongodbCore = require('../mongodb/mongodb.js')
const { ObjectId} = require('mongodb')
const mongodbCore = require("../mongodb/mongodb.js");
const { ObjectId } = require("mongodb");

const shortLinkDb = {
async getList() {
const db = mongodbCore.getDb()
// 查询所有数据
const data = await db.collection('short-link').find({}).toArray();
return data
},
async getList(queryStr, { pageIndex, pageSize }) {
const db = mongodbCore.getDb();
// 查询列表数据
let queryRule = {};
if (queryStr) {
queryRule = {
$or: [
{ shortLink: { $regex: queryStr } },
{ redirect: { $regex: queryStr } },
],
};
}
// 页码 - skip数据量 - 公式
// 1 0 (pageIndex - 1) * pageSize
// 2 pageSize
// 3
const list = await db
.collection("short-link")
.find(queryRule)
.limit(pageSize)
.skip((pageIndex - 1) * pageSize)
.toArray();

async add(payload) {
const db = mongodbCore.getDb()
// 插入数据时 _id 会自动增加
const insertResult = await db.collection('short-link').insertMany([
payload
]);
return insertResult
},
const total = await db.collection("short-link").find(queryRule).count();
return {list, total};
},

async edit(payload) {
const db = mongodbCore.getDb()
const { shortLink, redirect, _id } = payload
const updateResult = await db.collection('short-link').updateOne({
_id: ObjectId(_id)
}, {
$set: { shortLink, redirect }
})
return updateResult
},

async del(id) {
const db = mongodbCore.getDb()
const deleteResult = await db.collection('short-link').deleteMany({
_id: ObjectId(id)
})
return deleteResult
}
}
async add(payload) {
const db = mongodbCore.getDb();
// 插入数据时 _id 会自动增加
const insertResult = await db
.collection("short-link")
.insertMany([payload]);
return insertResult;
},

async edit(payload) {
const db = mongodbCore.getDb();
const { shortLink, redirect, _id } = payload;
const updateResult = await db.collection("short-link").updateOne(
{
_id: ObjectId(_id),
},
{
$set: { shortLink, redirect },
}
);
return updateResult;
},

async del(id) {
const db = mongodbCore.getDb();
const deleteResult = await db.collection("short-link").deleteMany({
_id: ObjectId(id),
});
return deleteResult;
},
};

module.exports = {
shortLinkDb
}
shortLinkDb,
};

0 comments on commit 1ae9bc7

Please sign in to comment.