修改分页没有正确返回的bug

This commit is contained in:
zhl 2021-04-23 17:31:57 +08:00
parent 0634527146
commit 95ba758bc0
11 changed files with 2590 additions and 17 deletions

View File

@ -36,6 +36,7 @@
"mongoose": "5.10.3",
"mongoose-findorcreate": "^3.0.0",
"qrcode": "^1.4.4",
"reflect-metadata": "^0.1.13",
"svg-captcha": "^1.4.0",
"tracer": "^1.0.3",
"urlencode": "^1.1.0",

View File

@ -8,8 +8,8 @@ export class ArticleController extends BaseController {
@permission('article:read')
@router('post /articles')
async query(req: any) {
let { start, limit } = req.params
start = +start || 0
let { start, limit, page} = req.params
start = +start || +page || 0
limit = +limit || 10
let { opt, sort } = Article.parseQueryParam(req.params)
let articles = await Article.find(opt)

View File

@ -7,8 +7,8 @@ class CouponController extends BaseController{
@permission('coupon:read')
@router('post /coupons')
async list(req, res) {
let { start, limit } = req.params
start = +start || 0
let { start, limit, page } = req.params
start = +start || +page || 0
limit = +limit || 10
let { opt, sort } = Coupon.parseQueryParam(req.params)
let articles = await Coupon.find(opt)

View File

@ -7,8 +7,8 @@ class GameController extends BaseController{
@permission('game:read')
@router('post /games')
async list(req, res) {
let { start, limit } = req.params
start = +start || 0
let { start, limit, page } = req.params
start = +start || +page || 0
limit = +limit || 10
let { opt, sort } = Game.parseQueryParam(req.params)
let articles = await Game.find(opt)

View File

@ -3,13 +3,14 @@ import BaseController from '../../common/base.controller'
import { permission, router } from '../../decorators/router'
import { ZError } from '../../common/ZError'
import { Puzzle } from '../../models/content/Puzzle'
import { PuzzleCategory } from '../../models/content/PuzzleCategory'
class PuzzleController extends BaseController{
@permission('puzzle:read')
@router('post /puzzles')
async list(req, res) {
let { start, limit } = req.params
start = +start || 0
let { start, limit, page } = req.params
start = +start || +page || 0
limit = +limit || 10
let { opt, sort } = Puzzle.parseQueryParam(req.params)
let articles = await Puzzle.find(opt)
@ -18,8 +19,19 @@ class PuzzleController extends BaseController{
.limit(limit)
let count = await Puzzle.count(opt)
let records = []
let cateMap = await PuzzleCategory.allCateMap()
for (let record of articles) {
records.push(record.toJson())
let data = record.toJson()
let category = ''
if (record.tag && cateMap.has(record.tag)) {
category += cateMap.get(record.tag)
}
if (record.sub_tag && cateMap.has(record.sub_tag)) {
category += ' - '
category += cateMap.get(record.sub_tag)
}
data.category = category
records.push(data)
}
return {
total: count,

View File

@ -9,8 +9,8 @@ class ShopController extends BaseController {
@role('admin')
@router('post /shops')
async shopList(req, res) {
let { start, limit } = req.params
start = +start || 0
let { start, limit, page } = req.params
start = +start || +page || 0
limit = +limit || 10
let { opt, sort } = Shop.parseQueryParam(req.params)
let articles = await Shop.find(opt)

View File

@ -1,8 +1,9 @@
import 'reflect-metadata'
const noJsonMetadataKey = Symbol('nojson')
const noJsonMetadataKey = ('noJsonSet')
/**
*
* toJson方法输出的字段上加上 @noJson
* @return {{(target: Function): void, (target: Object, propertyKey: (string | symbol)): void}}
*/
@ -12,5 +13,6 @@ export function noJson() {
export function checkJson(target: any, propertyKey: string) {
let val = Reflect.getMetadata(noJsonMetadataKey, target, propertyKey)
let s = Reflect.getMetadata('typegoose:properties', target, propertyKey)
return !val
}

View File

@ -13,6 +13,8 @@ const saveExcludeKeys = ['createdAt', 'updatedAt', '__v', '_id']
@plugin(findOrCreate)
export abstract class BaseModule extends FindOrCreate {
static db: Connection
static noJsonSet: Set<string> = new Set()
public updateFromReq(data: any) {
for (let key in data) {
@ -24,8 +26,9 @@ export abstract class BaseModule extends FindOrCreate {
public toJson() {
let result: any = {}
for (let key in this) {
if (checkJson(this, key+'' ) && jsonExcludeKeys.indexOf(key) == -1) {
// @ts-ignore
for (let key in this._doc) {
if (jsonExcludeKeys.indexOf(key) == -1) {
result[key] = this[key]
}
}

View File

@ -49,14 +49,25 @@ class PuzzleClass extends BaseModule {
public tag: string
@prop()
public subtag: string
public sub_tag: string
@prop()
public createtime: Date
public static parseQueryParam(params) {
let {key, timeBegin, timeEnd } = params
let {key, timeBegin, timeEnd, tag, sub_tag, groups } = params
let opt: any = {deleted: 0, is_hide: 0}
if (key) {
opt.question = {$regex: key, $options: 'i'}
}
if (tag) {
opt.tag = tag
}
if (sub_tag) {
opt.sub_tag = sub_tag
}
if (groups) {
Object.assign(opt, {groups})
}
if (timeBegin && !timeEnd) {
opt.createtime = {$gte: timeBegin};
} else if (timeBegin && timeEnd) {

View File

@ -1,5 +1,10 @@
import { dbconn } from '../../decorators/dbconn'
import { getModelForClass, modelOptions, prop } from '@typegoose/typegoose'
import {
getModelForClass,
modelOptions,
prop,
ReturnModelType
} from '@typegoose/typegoose'
import { BaseModule } from '../Base'
class SubType {
@ -21,6 +26,18 @@ class PuzzleCategoryClass extends BaseModule {
@prop({type: () => [SubType]})
public children: SubType[]
public static async allCateMap(this: ReturnModelType<typeof PuzzleCategoryClass>) {
let result: Map<string, string> = new Map()
let records = await this.find({}).exec()
for (let record of records) {
result.set(record._id, record.name)
for (let sub of record.children) {
result.set(sub._id, sub.name)
}
}
return result
}
}
export const PuzzleCategory = getModelForClass(PuzzleCategoryClass, { existingConnection: PuzzleCategoryClass.db })

2527
yarn.lock Normal file

File diff suppressed because it is too large Load Diff