修改分页没有正确返回的bug
This commit is contained in:
parent
0634527146
commit
95ba758bc0
@ -36,6 +36,7 @@
|
|||||||
"mongoose": "5.10.3",
|
"mongoose": "5.10.3",
|
||||||
"mongoose-findorcreate": "^3.0.0",
|
"mongoose-findorcreate": "^3.0.0",
|
||||||
"qrcode": "^1.4.4",
|
"qrcode": "^1.4.4",
|
||||||
|
"reflect-metadata": "^0.1.13",
|
||||||
"svg-captcha": "^1.4.0",
|
"svg-captcha": "^1.4.0",
|
||||||
"tracer": "^1.0.3",
|
"tracer": "^1.0.3",
|
||||||
"urlencode": "^1.1.0",
|
"urlencode": "^1.1.0",
|
||||||
|
@ -8,8 +8,8 @@ export class ArticleController extends BaseController {
|
|||||||
@permission('article:read')
|
@permission('article:read')
|
||||||
@router('post /articles')
|
@router('post /articles')
|
||||||
async query(req: any) {
|
async query(req: any) {
|
||||||
let { start, limit } = req.params
|
let { start, limit, page} = req.params
|
||||||
start = +start || 0
|
start = +start || +page || 0
|
||||||
limit = +limit || 10
|
limit = +limit || 10
|
||||||
let { opt, sort } = Article.parseQueryParam(req.params)
|
let { opt, sort } = Article.parseQueryParam(req.params)
|
||||||
let articles = await Article.find(opt)
|
let articles = await Article.find(opt)
|
||||||
|
@ -7,8 +7,8 @@ class CouponController extends BaseController{
|
|||||||
@permission('coupon:read')
|
@permission('coupon:read')
|
||||||
@router('post /coupons')
|
@router('post /coupons')
|
||||||
async list(req, res) {
|
async list(req, res) {
|
||||||
let { start, limit } = req.params
|
let { start, limit, page } = req.params
|
||||||
start = +start || 0
|
start = +start || +page || 0
|
||||||
limit = +limit || 10
|
limit = +limit || 10
|
||||||
let { opt, sort } = Coupon.parseQueryParam(req.params)
|
let { opt, sort } = Coupon.parseQueryParam(req.params)
|
||||||
let articles = await Coupon.find(opt)
|
let articles = await Coupon.find(opt)
|
||||||
|
@ -7,8 +7,8 @@ class GameController extends BaseController{
|
|||||||
@permission('game:read')
|
@permission('game:read')
|
||||||
@router('post /games')
|
@router('post /games')
|
||||||
async list(req, res) {
|
async list(req, res) {
|
||||||
let { start, limit } = req.params
|
let { start, limit, page } = req.params
|
||||||
start = +start || 0
|
start = +start || +page || 0
|
||||||
limit = +limit || 10
|
limit = +limit || 10
|
||||||
let { opt, sort } = Game.parseQueryParam(req.params)
|
let { opt, sort } = Game.parseQueryParam(req.params)
|
||||||
let articles = await Game.find(opt)
|
let articles = await Game.find(opt)
|
||||||
|
@ -3,13 +3,14 @@ import BaseController from '../../common/base.controller'
|
|||||||
import { permission, router } from '../../decorators/router'
|
import { permission, router } from '../../decorators/router'
|
||||||
import { ZError } from '../../common/ZError'
|
import { ZError } from '../../common/ZError'
|
||||||
import { Puzzle } from '../../models/content/Puzzle'
|
import { Puzzle } from '../../models/content/Puzzle'
|
||||||
|
import { PuzzleCategory } from '../../models/content/PuzzleCategory'
|
||||||
|
|
||||||
class PuzzleController extends BaseController{
|
class PuzzleController extends BaseController{
|
||||||
@permission('puzzle:read')
|
@permission('puzzle:read')
|
||||||
@router('post /puzzles')
|
@router('post /puzzles')
|
||||||
async list(req, res) {
|
async list(req, res) {
|
||||||
let { start, limit } = req.params
|
let { start, limit, page } = req.params
|
||||||
start = +start || 0
|
start = +start || +page || 0
|
||||||
limit = +limit || 10
|
limit = +limit || 10
|
||||||
let { opt, sort } = Puzzle.parseQueryParam(req.params)
|
let { opt, sort } = Puzzle.parseQueryParam(req.params)
|
||||||
let articles = await Puzzle.find(opt)
|
let articles = await Puzzle.find(opt)
|
||||||
@ -18,8 +19,19 @@ class PuzzleController extends BaseController{
|
|||||||
.limit(limit)
|
.limit(limit)
|
||||||
let count = await Puzzle.count(opt)
|
let count = await Puzzle.count(opt)
|
||||||
let records = []
|
let records = []
|
||||||
|
let cateMap = await PuzzleCategory.allCateMap()
|
||||||
for (let record of articles) {
|
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 {
|
return {
|
||||||
total: count,
|
total: count,
|
||||||
|
@ -9,8 +9,8 @@ class ShopController extends BaseController {
|
|||||||
@role('admin')
|
@role('admin')
|
||||||
@router('post /shops')
|
@router('post /shops')
|
||||||
async shopList(req, res) {
|
async shopList(req, res) {
|
||||||
let { start, limit } = req.params
|
let { start, limit, page } = req.params
|
||||||
start = +start || 0
|
start = +start || +page || 0
|
||||||
limit = +limit || 10
|
limit = +limit || 10
|
||||||
let { opt, sort } = Shop.parseQueryParam(req.params)
|
let { opt, sort } = Shop.parseQueryParam(req.params)
|
||||||
let articles = await Shop.find(opt)
|
let articles = await Shop.find(opt)
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import 'reflect-metadata'
|
import 'reflect-metadata'
|
||||||
|
|
||||||
const noJsonMetadataKey = Symbol('nojson')
|
const noJsonMetadataKey = ('noJsonSet')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 这方法无效
|
||||||
* 在不需要toJson方法输出的字段上加上 @noJson
|
* 在不需要toJson方法输出的字段上加上 @noJson
|
||||||
* @return {{(target: Function): void, (target: Object, propertyKey: (string | symbol)): void}}
|
* @return {{(target: Function): void, (target: Object, propertyKey: (string | symbol)): void}}
|
||||||
*/
|
*/
|
||||||
@ -12,5 +13,6 @@ export function noJson() {
|
|||||||
|
|
||||||
export function checkJson(target: any, propertyKey: string) {
|
export function checkJson(target: any, propertyKey: string) {
|
||||||
let val = Reflect.getMetadata(noJsonMetadataKey, target, propertyKey)
|
let val = Reflect.getMetadata(noJsonMetadataKey, target, propertyKey)
|
||||||
|
let s = Reflect.getMetadata('typegoose:properties', target, propertyKey)
|
||||||
return !val
|
return !val
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,8 @@ const saveExcludeKeys = ['createdAt', 'updatedAt', '__v', '_id']
|
|||||||
@plugin(findOrCreate)
|
@plugin(findOrCreate)
|
||||||
export abstract class BaseModule extends FindOrCreate {
|
export abstract class BaseModule extends FindOrCreate {
|
||||||
static db: Connection
|
static db: Connection
|
||||||
|
static noJsonSet: Set<string> = new Set()
|
||||||
|
|
||||||
|
|
||||||
public updateFromReq(data: any) {
|
public updateFromReq(data: any) {
|
||||||
for (let key in data) {
|
for (let key in data) {
|
||||||
@ -24,8 +26,9 @@ export abstract class BaseModule extends FindOrCreate {
|
|||||||
|
|
||||||
public toJson() {
|
public toJson() {
|
||||||
let result: any = {}
|
let result: any = {}
|
||||||
for (let key in this) {
|
// @ts-ignore
|
||||||
if (checkJson(this, key+'' ) && jsonExcludeKeys.indexOf(key) == -1) {
|
for (let key in this._doc) {
|
||||||
|
if (jsonExcludeKeys.indexOf(key) == -1) {
|
||||||
result[key] = this[key]
|
result[key] = this[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,14 +49,25 @@ class PuzzleClass extends BaseModule {
|
|||||||
public tag: string
|
public tag: string
|
||||||
|
|
||||||
@prop()
|
@prop()
|
||||||
public subtag: string
|
public sub_tag: string
|
||||||
|
@prop()
|
||||||
|
public createtime: Date
|
||||||
|
|
||||||
public static parseQueryParam(params) {
|
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}
|
let opt: any = {deleted: 0, is_hide: 0}
|
||||||
if (key) {
|
if (key) {
|
||||||
opt.question = {$regex: key, $options: 'i'}
|
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) {
|
if (timeBegin && !timeEnd) {
|
||||||
opt.createtime = {$gte: timeBegin};
|
opt.createtime = {$gte: timeBegin};
|
||||||
} else if (timeBegin && timeEnd) {
|
} else if (timeBegin && timeEnd) {
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
import { dbconn } from '../../decorators/dbconn'
|
import { dbconn } from '../../decorators/dbconn'
|
||||||
import { getModelForClass, modelOptions, prop } from '@typegoose/typegoose'
|
import {
|
||||||
|
getModelForClass,
|
||||||
|
modelOptions,
|
||||||
|
prop,
|
||||||
|
ReturnModelType
|
||||||
|
} from '@typegoose/typegoose'
|
||||||
import { BaseModule } from '../Base'
|
import { BaseModule } from '../Base'
|
||||||
|
|
||||||
class SubType {
|
class SubType {
|
||||||
@ -21,6 +26,18 @@ class PuzzleCategoryClass extends BaseModule {
|
|||||||
|
|
||||||
@prop({type: () => [SubType]})
|
@prop({type: () => [SubType]})
|
||||||
public children: 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 })
|
export const PuzzleCategory = getModelForClass(PuzzleCategoryClass, { existingConnection: PuzzleCategoryClass.db })
|
||||||
|
Loading…
x
Reference in New Issue
Block a user