作品列表接口传参isTemplate后查不出数据的问题

作品列表接口传参isTemplate后查不出数据的问题

关于作品列表接口传参isTemplate后查不出数据的问题

问题描述:

api/works

相关截图:

不传isTemplate时有数据

https://img1.sycdn.imooc.com//climg/6449f9c7099f5fe906390237.jpg

传入isTemplate后查不出数据,但是用mogo命令行去查还是能查出来

https://img1.sycdn.imooc.com//climg/6449fa3b0913db5109060253.jpg

相关代码:

数据库mogo版本:4.4.6

controller层代码跟视频一致的

  async myList() {
    const { ctx } = this
    const userId = ctx.state.user._id
    const { pageIndex, pageSize, isTemplate, title } = ctx.query
    const findConditon = {
      user: userId,
      ...(title && { title: { $regex: title, $options: 'i' } }),
      ...(isTemplate && { isTemplate: !!parseInt(isTemplate) }),
    }
    console.log(findConditon)

    const listCondition: IndexCondition = {
      select: 'id author copiedCount coverImg desc title user isHot createdAt',
      populate: { path: 'user', select: 'username nickName picture' },
      find: findConditon,
      ...(pageIndex && { pageIndex: parseInt(pageIndex) }),
      ...(pageSize && { pageSize: parseInt(pageSize) }),
    }
    const res = await ctx.service.work.getList(listCondition)
    ctx.helper.success({ ctx, res })
  }

model层由于版本问题修改了下api调用方式,不知道是不是版本造成的

function initWorkModel(app: Application) {
  const mongoose = app.mongoose
  const Schema = mongoose.Schema
  const AutoIncrement = AutoIncrementFactory(mongoose)
  const WorkSchema = new Schema<WorkProps>(
    {
      uuid: { type: String, unique: true },
      title: { type: String, required: true },
      desc: { type: String },
      coverImg: { type: String },
      content: { type: Object },
      isTemplate: { type: Boolean },
      isPublic: { type: Boolean },
      isHot: { type: Boolean },
      author: { type: String, required: true },
      copiedCount: { type: Number, default: 0 },
      status: { type: Number, default: 1 },
      user: { type: Schema.Types.ObjectId, ref: 'User' },
      channels: { type: Array },
      latestPublishAt: { type: Date },
    },
    { timestamps: true },
  )
  WorkSchema.plugin(AutoIncrement, { inc_field: 'id', id: 'works_id_counter' })
  return mongoose.model<WorkProps>('Work', WorkSchema)
}

请老师解答。


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
张轩 2023-04-29 10:28:18

同学你好

我使用你的 repo 测试,发现数据并没有任何问题。请看我的测试(我把登陆状态暂时去掉了用于测试):


过滤前:

https://img1.sycdn.imooc.com//climg/644c7fd9098718d014520800.jpg

过滤后:

https://img1.sycdn.imooc.com//climg/644c804d0997b15209680400.jpg


由于这里有用户状态,你可以你的测试数据看看是不是这个用户的,还可以测试一下别的属性(比如 isHot)是否可以。




张轩 2023-04-28 09:50:41

同学你好


能把代码库(git)提供一下吗? 我在本地帮你调试看下哈

  • 提问者 斜光 #1

    https://github.com/iacg-world/sharecraft-backend.git

    2023-04-28 10:05:24
提问者 斜光 2023-04-27 14:51:26

数据库命令行查出的数据

https://img1.sycdn.imooc.com//climg/644a1b5709d0083114260082.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师