Gathering detailed insights and metrics for nestjs-mongoose-crud-fix1
Gathering detailed insights and metrics for nestjs-mongoose-crud-fix1
Gathering detailed insights and metrics for nestjs-mongoose-crud-fix1
Gathering detailed insights and metrics for nestjs-mongoose-crud-fix1
npm install nestjs-mongoose-crud-fix1
Typescript
Module System
Node Version
NPM Version
Cumulative downloads
Total Downloads
Last Day
0%
NaN
Compared to previous day
Last Week
0%
NaN
Compared to previous week
Last Month
0%
NaN
Compared to previous month
Last Year
0%
NaN
Compared to previous year
Nest.js crud module for mongoose models without @nestjsx/crud
Nest.js + Typegoose 中文视频教程请移步哔哩哔哩: 全栈之巅
Install and setup nestjs-typegoose or nestjs-mongoose
Install
1yarn add nestjs-mongoose-crud 2# or 3npm i nestjs-mongoose-crud
Import model to module:
1import { Module } from '@nestjs/common'; 2import { UsersController } from './users.controller'; 3import { TypegooseModule } from 'nestjs-typegoose'; 4import { User } from './user.model'; 5 6@Module({ 7 imports: [ 8 TypegooseModule.forFeature([User]) 9 ], 10 controllers: [UsersController] 11}) 12export class UsersModule {}
Add @Crud()
decorator and inject imported model to model
property.
1import { Controller } from '@nestjs/common'; 2import { Crud } from 'nestjs-mongoose-crud' 3import { User } from './user.model'; 4import { InjectModel } from 'nestjs-typegoose'; 5import { ModelType } from '@typegoose/typegoose/lib/types'; 6 7@Crud({ 8 model: User 9}) 10@Controller('users') 11export class UsersController { 12 constructor(@InjectModel(User) public model: ModelType<User>) {} 13}
Test your CRUD APIs: http://localhost:3000/users
e.g. @Crud()
for UsersController
METHOD | PATH | DESC |
---|---|---|
GET | /users | Get all users |
GET | /users/:id | Get a user |
POST | /users | Create a user |
PUT | /users/:id | update a user |
DELETE | /users/:id | Delete a user |
You can find all routes and DTOs by setup swagger
Use a JSON (in string) query
parameter to find records:
1export interface PaginateKeys { 2 data?: string 3 total?: string 4 lastPage?: string 5 currentPage?: string 6} 7 8export interface CrudRoute { 9 decorators?: MethodDecorator[] 10} 11export interface CrudRouteWithDto extends CrudRoute { 12 dto?: any 13 transform?: (data: any) => any 14} 15export interface CrudRouteForFind extends CrudRoute { 16 paginate?: PaginateKeys | false 17 limit?: number 18 populate?: string | any 19 sort?: string | any 20 where?: any 21} 22export interface CrudRouteForFindOne extends CrudRoute { 23 populate?: string | any 24 where?: any 25 select?: any 26} 27 28export interface CrudRoutes { 29 grid?: false, 30 form?: false, 31 find?: CrudRouteForFind | false, 32 findOne?: CrudRouteForFindOne | false, 33 create?: CrudRouteWithDto | false, 34 update?: CrudRouteWithDto | false, 35 delete?: CrudRoute | false, 36 37} 38export interface CrudOptions { 39 routes?: CrudRoutes 40} 41export interface OptionItem { 42 text: string 43 value: string 44} 45export interface Field { 46 label?: string 47 icon?: string 48 type?: 'hide' | 'text' | 'input' | 'autocomplete' | 'textarea' | 'number' | 'checkbox' | 'checkbox-button' | 'radio' | 'date' | 'dates' | 'week' | 'month' | 'year' | 'daterange' | 'time' | 'datetime' | 'datetimerange' | 'switch' | 'yesno' | 'slider' | 'password' | 'color' | 'select' | 'cascader' | 'transfer' | 'rate' | 'tag' | 'image' | 'button' | 'json-editor' | 'upload-file' | 'image-uploader' | 'tree-select' | 'video-uploader' | 'quill-editor' | 'markdown-editor' | 'bmap' | 'codemirror' | 'gallery' 49 listable?: boolean 50 editable?: boolean 51 attrs?: any 52 layout?: number 53 tip?: string 54 options?: OptionItem[] 55 class?: string | string[] 56 style?: any 57 width?: string | number 58 [key: string]: any 59 column?: Field[] 60} 61 62export interface Fields { 63 [key: string]: Field 64} 65 66export interface AvueCrudOption { 67 addBtn?: boolean 68 addRowBtn?: boolean 69 align?: string 70 border?: boolean 71 calcHeight?: number 72 cancelBtnTitle?: string 73 columnBtn?: boolean 74 dataType?: string 75 cellBtn?: boolean 76 dateBtn?: boolean 77 cancelBtn?: boolean 78 dateDefault?: boolean 79 dicData?: any 80 dicMethod?: string 81 dicQuery?: any 82 dicUrl?: string 83 delBtn?: boolean 84 defaultSort?: any 85 dialogFullscreen?: boolean 86 dialogEscape?: boolean 87 dialogClickModal?: boolean 88 dialogCloseBtn?: boolean 89 dialogModal?: boolean 90 dialogTop?: string | number 91 dialogType?: string 92 dialogWidth?: string | number 93 dialogHeight?: string | number 94 defaultExpandAll?: boolean 95 expandRowKeys?: string[] 96 editBtn?: boolean 97 emptyText?: string 98 expand?: boolean 99 expandWidth?: number 100 expandFixed?: boolean 101 excelBtn?: boolean 102 filterBtn?: boolean 103 formWidth?: string | number 104 height?: number 105 header?: boolean 106 index?: boolean 107 indexLabel?: string 108 indexWidth?: number 109 indexFixed?: boolean 110 rowKey?: string 111 indeterminate?: boolean 112 labelWidth?: number 113 maxHeight?: number 114 menu?: boolean 115 menuWidth?: number 116 menuXsWidth?: number 117 menuAlign?: string 118 menuType?: string 119 menuBtnTitle?: string 120 pageSize?: string 121 pageSizes?: number[] 122 printBtn?: boolean 123 refreshBtn?: boolean 124 saveBtn?: boolean 125 updateBtn?: boolean 126 cancalBtn?: boolean 127 saveBtnTitle?: string 128 selection?: boolean 129 selectionWidth?: number 130 selectionFixed?: boolean 131 searchBtn?: boolean 132 selectable?: boolean 133 reserveSelection?: true 134 selectClearBtn?: boolean 135 showHeader?: boolean 136 showSummary?: boolean 137 size?: string 138 sumColumnList?: string[] 139 stripe?: boolean 140 tip?: string 141 tipPlacement?: string 142 title?: string 143 checkStrictly?: boolean 144 updateBtnTitle?: string 145 viewBtn?: boolean 146 width?: number 147 column?: Field[] 148 group?: Field[] 149} 150 151export interface AvueCrudConfig { 152 option?: AvueCrudOption 153 [key: string]: any 154} 155 156export interface CrudOptionsWithModel extends CrudOptions { 157 name?: string | string[], 158 model: any 159 fields?: Fields 160 config?: ((instance?: any) => AvueCrudConfig | Promise<AvueCrudConfig>) | AvueCrudConfig 161} 162
No vulnerabilities found.
No security vulnerabilities found.