[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J707XC2A7EV8N0D4BXHT2Z":3,"skill-same:01M6J707XC2A7EV8N0D4BXHT2Z":90},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6J707XC2A7EV8N0D4BXHT2Z","vk-basedao-gettabledata",null,"vk-unicloud框架的vk.baseDao.getTableData方法完整使用指南。Use when working with vk-unicloud-admin framework database queries, especially when: (1) Implementing table data queries with pagination, filtering, and sorting, (2) Using vk-data-table component in admin pages, (3) Writing cloud functions with complex database operations including joins, grouping, and aggregation, (4) Need to understand query parameters, return value structure, and performance optimization.","caobingsheng\u002Fskills","caobingsheng","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F18641728?v=4","01M6J6H1N0RR38WEA1KVM9V4GB","01M6J6H1SB287CPJQARKE9FXS0",1,"MIT","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fvk-basedao-gettabledata\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"vk basedao gettabledata","vk","query","cloud functions","implementing","with","sorting","database queries","database operations","pages","writing","grouping","queries","functions","use","filtering","Optimization","admin","database","performance","2026-11-10 10:12:30",false,"---\nname: vk-basedao-gettabledata\ndescription: \"vk-unicloud框架的vk.baseDao.getTableData方法完整使用指南。Use when working with vk-unicloud-admin framework database queries, especially when: (1) Implementing table data queries with pagination, filtering, and sorting, (2) Using vk-data-table component in admin pages, (3) Writing cloud functions with complex database operations including joins, grouping, and aggregation, (4) Need to understand query parameters, return value structure, and performance optimization.\"\n---\n\n# vk.baseDao.getTableData 使用指南\n\n## Overview\n\nvk.baseDao.getTableData 是 vk-unicloud 框架中用于数据库查询的核心方法,特别适用于万能表格(vk-data-table)组件。它提供了强大的分页、筛选、排序、连表、分组等功能。\n\n## 快速开始\n\n### 基础用法\n\n```javascript\n\u002F\u002F 云函数中\nlet res = await vk.baseDao.getTableData({\n  dbName: \"表名\",\n  data: {\n    pageIndex: 1,\n    pageSize: 20,\n    formData: {\n      nickname: \"张飞\"\n    },\n    columns: [\n      {\n        key: \"nickname\",\n        title: \"昵称\",\n        type: \"text\",\n        width: 160,\n        mode: \"%%\"\n      }\n    ],\n    sortRule: [\n      { name: \"_add_time\", type: \"desc\" }\n    ]\n  },\n  whereJson: {\n    user_id: uid\n  }\n});\n```\n\n### 返回值结构\n\n```javascript\n{\n  rows: [],      \u002F\u002F 数据列表\n  total: 0,      \u002F\u002F 总记录数\n  hasMore: false,\u002F\u002F 是否还有下一页\n  pagination: {  \u002F\u002F 分页信息\n    pageIndex: 1,\n    pageSize: 20\n  },\n  getCount: true \u002F\u002F 是否执行了count请求\n}\n```\n\n## 核心功能\n\n### 1. 分页查询\n\nvk.baseDao.getTableData 支持多种分页方案,详见 [分页方案参考](references\u002Fpagination_modes.md)\n\n### 2. 条件查询\n\n通过 `data.formData` 和 `data.columns` 实现灵活的条件查询,详见 [条件查询参考](references\u002Fquery_modes.md)\n\n### 3. 连表查询\n\n支持多表关联查询,详见 [连表查询参考](references\u002Fforeign_db.md)\n\n### 4. 分组聚合\n\n支持分组统计和聚合操作,详见 [分组查询参考](references\u002Fgroup_query.md)\n\n## 参数说明\n\n### 基础参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| dbName | String | 是 | 主表表名 |\n| data | Object | 是 | 查询参数对象 |\n| whereJson | Object | 否 | 主表强制where条件 |\n| fieldJson | Object | 否 | 字段显示规则 |\n| sortArr | Array | 否 | 主表排序规则 |\n| foreignDB | Array | 否 | 连表规则 |\n| lastWhereJson | Object | 否 | 连表后的where条件 |\n| lastSortArr | Array | 否 | 连表后的排序规则 |\n| addFields | Object | 否 | 添加自定义字段 |\n| getCount | Boolean | 否 | 是否返回总记录数,默认true |\n| hasMore | Boolean | 否 | 是否返回精确的hasMore,默认false |\n\n### data参数详解\n\ndata参数包含前端传递的查询条件和排序规则:\n\n```javascript\ndata: {\n  pageIndex: 1,      \u002F\u002F 第几页\n  pageSize: 20,      \u002F\u002F 每页数量\n  formData: {},      \u002F\u002F 查询条件数据源\n  columns: [],       \u002F\u002F 查询条件字段规则\n  sortRule: []       \u002F\u002F 排序规则\n}\n```\n\n## 常见场景\n\n### 场景1: 简单分页查询\n\n```javascript\nlet res = await vk.baseDao.getTableData({\n  dbName: \"uni-id-users\",\n  data: {\n    pageIndex: 1,\n    pageSize: 20\n  },\n  whereJson: {\n    status: 1\n  }\n});\n```\n\n### 场景2: 带筛选条件的查询\n\n```javascript\nlet res = await vk.baseDao.getTableData({\n  dbName: \"订单表\",\n  data: {\n    pageIndex: 1,\n    pageSize: 20,\n    formData: {\n      status: 1,\n      createTime: [\"2024-01-01\", \"2024-12-31\"]\n    },\n    columns: [\n      { key: \"status\", title: \"状态\", type: \"radio\", mode: \"=\" },\n      { key: \"createTime\", title: \"创建时间\", type: \"datetimerange\", mode: \"[]\" }\n    ]\n  }\n});\n```\n\n### 场景3: 连表查询\n\n```javascript\nlet res = await vk.baseDao.getTableData({\n  dbName: \"opendb-mall-comments\",\n  data: {\n    pageIndex: 1,\n    pageSize: 10\n  },\n  foreignDB: [{\n    dbName: \"uni-id-users\",\n    localKey: \"user_id\",\n    foreignKey: \"_id\",\n    as: \"userInfo\",\n    limit: 1\n  }]\n});\n```\n\n## 性能优化建议\n\n1. **getCount参数**: 大表查询时建议设置 `getCount: false` 避免count请求性能问题\n2. **索引优化**: 为常用查询字段建立索引\n3. **限制查询范围**: 使用whereJson先过滤数据,减少连表和分组的数据量\n4. **避免lastWhereJson**: 数据量大时,lastWhereJson有严重性能问题\n5. **分页限制**: pageIndex * pageSize 最好不要超过300万\n\n## 参考文档\n\n详细的使用说明和示例请查看references目录下的文档:\n\n- [API完整参考](references\u002Fapi_reference.md) - 所有参数和返回值的详细说明\n- [分页方案](references\u002Fpagination_modes.md) - 4种分页方案详解\n- [查询模式](references\u002Fquery_modes.md) - 各种查询条件和模式\n- [连表查询](references\u002Fforeign_db.md) - 多表关联查询完整指南\n- [分组聚合](references\u002Fgroup_query.md) - 分组统计和聚合操作\n- [性能优化](references\u002Fperformance.md) - 性能优化最佳实践\n","# vk.baseDao.getTableData 使用指南\n\n## Overview\n\nvk.baseDao.getTableData 是 vk-unicloud 框架中用于数据库查询的核心方法,特别适用于万能表格(vk-data-table)组件。它提供了强大的分页、筛选、排序、连表、分组等功能。\n\n## 快速开始\n\n### 基础用法\n\n```javascript\n\u002F\u002F 云函数中\nlet res = await vk.baseDao.getTableData({\n  dbName: \"表名\",\n  data: {\n    pageIndex: 1,\n    pageSize: 20,\n    formData: {\n      nickname: \"张飞\"\n    },\n    columns: [\n      {\n        key: \"nickname\",\n        title: \"昵称\",\n        type: \"text\",\n        width: 160,\n        mode: \"%%\"\n      }\n    ],\n    sortRule: [\n      { name: \"_add_time\", type: \"desc\" }\n    ]\n  },\n  whereJson: {\n    user_id: uid\n  }\n});\n```\n\n### 返回值结构\n\n```javascript\n{\n  rows: [],      \u002F\u002F 数据列表\n  total: 0,      \u002F\u002F 总记录数\n  hasMore: false,\u002F\u002F 是否还有下一页\n  pagination: {  \u002F\u002F 分页信息\n    pageIndex: 1,\n    pageSize: 20\n  },\n  getCount: true \u002F\u002F 是否执行了count请求\n}\n```\n\n## 核心功能\n\n### 1. 分页查询\n\nvk.baseDao.getTableData 支持多种分页方案,详见 [分页方案参考](references\u002Fpagination_modes.md)\n\n### 2. 条件查询\n\n通过 `data.formData` 和 `data.columns` 实现灵活的条件查询,详见 [条件查询参考](references\u002Fquery_modes.md)\n\n### 3. 连表查询\n\n支持多表关联查询,详见 [连表查询参考](references\u002Fforeign_db.md)\n\n### 4. 分组聚合\n\n支持分组统计和聚合操作,详见 [分组查询参考](references\u002Fgroup_query.md)\n\n## 参数说明\n\n### 基础参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| dbName | String | 是 | 主表表名 |\n| data | Object | 是 | 查询参数对象 |\n| whereJson | Object | 否 | 主表强制where条件 |\n| fieldJson | Object | 否 | 字段显示规则 |\n| sortArr | Array | 否 | 主表排序规则 |\n| foreignDB | Array | 否 | 连表规则 |\n| lastWhereJson | Object | 否 | 连表后的where条件 |\n| lastSortArr | Array | 否 | 连表后的排序规则 |\n| addFields | Object | 否 | 添加自定义字段 |\n| getCount | Boolean | 否 | 是否返回总记录数,默认true |\n| hasMore | Boolean | 否 | 是否返回精确的hasMore,默认false |\n\n### data参数详解\n\ndata参数包含前端传递的查询条件和排序规则:\n\n```javascript\ndata: {\n  pageIndex: 1,      \u002F\u002F 第几页\n  pageSize: 20,      \u002F\u002F 每页数量\n  formData: {},      \u002F\u002F 查询条件数据源\n  columns: [],       \u002F\u002F 查询条件字段规则\n  sortRule: []       \u002F\u002F 排序规则\n}\n```\n\n## 常见场景\n\n### 场景1: 简单分页查询\n\n```javascript\nlet res = await vk.baseDao.getTableData({\n  dbName: \"uni-id-users\",\n  data: {\n    pageIndex: 1,\n    pageSize: 20\n  },\n  whereJson: {\n    status: 1\n  }\n});\n```\n\n### 场景2: 带筛选条件的查询\n\n```javascript\nlet res = await vk.baseDao.getTableData({\n  dbName: \"订单表\",\n  data: {\n    pageIndex: 1,\n    pageSize: 20,\n    formData: {\n      status: 1,\n      createTime: [\"2024-01-01\", \"2024-12-31\"]\n    },\n    columns: [\n      { key: \"status\", title: \"状态\", type: \"radio\", mode: \"=\" },\n      { key: \"createTime\", title: \"创建时间\", type: \"datetimerange\", mode: \"[]\" }\n    ]\n  }\n});\n```\n\n### 场景3: 连表查询\n\n```javascript\nlet res = await vk.baseDao.getTableData({\n  dbName: \"opendb-mall-comments\",\n  data: {\n    pageIndex: 1,\n    pageSize: 10\n  },\n  foreignDB: [{\n    dbName: \"uni-id-users\",\n    localKey: \"user_id\",\n    foreignKey: \"_id\",\n    as: \"userInfo\",\n    limit: 1\n  }]\n});\n```\n\n## 性能优化建议\n\n1. **getCount参数**: 大表查询时建议设置 `getCount: false` 避免count请求性能问题\n2. **索引优化**: 为常用查询字段建立索引\n3. **限制查询范围**: 使用whereJson先过滤数据,减少连表和分组的数据量\n4. **避免lastWhereJson**: 数据量大时,lastWhereJson有严重性能问题\n5. **分页限制**: pageIndex * pageSize 最好不要超过300万\n\n## 参考文档\n\n详细的使用说明和示例请查看references目录下的文档:\n\n- [API完整参考](references\u002Fapi_reference.md) - 所有参数和返回值的详细说明\n- [分页方案](references\u002Fpagination_modes.md) - 4种分页方案详解\n- [查询模式](references\u002Fquery_modes.md) - 各种查询条件和模式\n- [连表查询](references\u002Fforeign_db.md) - 多表关联查询完整指南\n- [分组聚合](references\u002Fgroup_query.md) - 分组统计和聚合操作\n- [性能优化](references\u002Fperformance.md) - 性能优化最佳实践\n",{"name":5,"description":7},"main","309495d95536f4a5e4db1a251f246589229e13e8","skills\u002Fvk-basedao-gettabledata",0,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills","https:\u002F\u002Fgithub.com\u002Fcaobingsheng","2026-04-11 12:21:07",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add caobingsheng\u002Fskills --skill vk-basedao-gettabledata",{"tool":56,"command":57},"bunx","bunx skills add caobingsheng\u002Fskills --skill vk-basedao-gettabledata",{"tool":59,"command":60},"pnpm","pnpm dlx skills add caobingsheng\u002Fskills --skill vk-basedao-gettabledata","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fvk-basedao-gettabledata\u002FSKILL.md",true,[64,70,74,78,82,86],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fapi_reference.md","REFERENCE","参考文档",7848,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fvk-basedao-gettabledata\u002Freferences\u002Fapi_reference.md",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fforeign_db.md",10388,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fvk-basedao-gettabledata\u002Freferences\u002Fforeign_db.md",{"path":75,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fgroup_query.md",11040,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fvk-basedao-gettabledata\u002Freferences\u002Fgroup_query.md",{"path":79,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fpagination_modes.md",6818,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fvk-basedao-gettabledata\u002Freferences\u002Fpagination_modes.md",{"path":83,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fperformance.md",13394,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fvk-basedao-gettabledata\u002Freferences\u002Fperformance.md",{"path":87,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fquery_modes.md",9215,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fvk-basedao-gettabledata\u002Freferences\u002Fquery_modes.md",[91,110,126,139,150,181],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":102,"publishedAt":38},"01M6J72F9FX5W05JHBQQW9EHS5","tdd-workflows-tdd-refactor","Use when working with tdd workflows tdd refactor","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflows-tdd-refactor\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[103,104,105,106,107,32,108,23,109],"tdd","workflows","refactor","tdd workflows","tdd workflows tdd refactor","community","unknown",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":38},"01M6J72BQ4NV5HEX94RQJ8B4J2","tdd-workflows-tdd-red","Generate failing tests for the TDD red phase to define expected behavior and edge cases.","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflows-tdd-red\u002FSKILL.md",[],[117,103,104,118,106,119,120,121,108,122,123,124,125,109],"red","tdd workflows tdd red","edge","generate","behavior","define","tests","for","expected",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":38},"01M6J727C8Q52EG3RTQWMC2X61","tdd-workflows-tdd-green","Implement the minimal code needed to make failing tests pass in the TDD green phase.","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflows-tdd-green\u002FSKILL.md",[],[133,106,134,104,103,135,108,136,137,123,138,109],"green","tdd workflows tdd green","implement","minimal","code","make",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":146,"publishedAt":38},"01M6J723JYFES8D9PHGY81QBHZ","tdd-workflows-tdd-cycle","Use when working with tdd workflows tdd cycle","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflows-tdd-cycle\u002FSKILL.md",[145],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},[103,104,147,148,149,106,108,23,32,109],"cycle","tdd cycle","tdd workflows tdd cycle",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":167,"publishedAt":38},"01M6J71ZC3W0FE9CKQGYRCSRCA","tdd-workflow","Use this skill when writing new features, fixing bugs, or refactoring code. Enforces test-driven development with 80%+ coverage including unit, integration, and E2E tests.","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflow\u002FSKILL.md",[156,159,162],{"categoryNo":157,"categoryName":158,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":160,"categoryName":161,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":163,"categoryName":164,"taxonomyType":165,"taxonomyTypeDesc":166},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[168,169,103,28,170,32,171,172,23,173,174,123,175,176,177,178,137,179,180],"tdd workflow","workflow","test","features","bugs","unit","driven","coverage","refactoring","e2e","integration","development","e2e tests",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":189,"publishedAt":38},"01M6J71VTWV5GP7AQ08G4CDWFG","tdd-orchestrator","Master TDD orchestrator specializing in red-green-refactor discipline, multi-agent workflow coordination, and comprehensive test-driven development practices.","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-orchestrator\u002FSKILL.md",[187,188],{"categoryNo":157,"categoryName":158,"taxonomyType":100,"taxonomyTypeDesc":101},{"categoryNo":160,"categoryName":161,"taxonomyType":100,"taxonomyTypeDesc":101},[103,190,191,192,109,193,117,174,133,194,108,195,196,197,198,105,179,170,169],"orchestrator","tdd orchestrator","master","multi","agent workflow","red-green-refactor","discipline","multi-agent","coordination"]