{"_id":"@akizuki/egg-typegoose","_rev":"2-0069faa789569d5c0242839731e21ebe","name":"@akizuki/egg-typegoose","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@akizuki/egg-typegoose","version":"1.0.0","description":"typegoose plugin for Egg.js.","eggPlugin":{"name":"typegoose"},"keywords":["egg","eggPlugin","egg-plugin"],"dependencies":{"@typegoose/typegoose":"^7.6.0","chokidar":"^3.5.1","fs-extra":"^9.1.0","fs-jetpack":"^4.1.0","mongoose":"^5.12.3","prettier":"^2.2.1"},"devDependencies":{"@types/chokidar":"^2.1.3","@types/fs-extra":"^9.0.11","@types/mongoose":"^5.10.4","@types/prettier":"^2.2.3","autod":"^3.0.1","autod-egg":"^1.1.0","egg":"^2.16.0","egg-bin":"^4.11.0","egg-ci":"^1.11.0","egg-mock":"^3.21.0","eslint":"^5.13.0","eslint-config-egg":"^7.1.0","typescript":"^4.2.4"},"engines":{"node":">=8.0.0"},"scripts":{"tsc":"tsc -p tsconfig.json","release":"standard-version"},"ci":{"version":"8, 10"},"repository":{"type":"git","url":"git+https://github.com/eggjs/egg-typegoose.git"},"bugs":{"url":"https://github.com/eggjs/egg/issues"},"homepage":"https://github.com/eggjs/egg-typegoose#readme","author":{"name":"FangQiuLiang"},"license":"MIT","gitHead":"e03632255a60be46d7968e3c9c18b9572a428908","_id":"@akizuki/egg-typegoose@1.0.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-gzneVxFeKY7FIG+P5NEIwllIb0CBJwLOhOrYlHvM1oyzbyDL34r9FtXfNil2b4wWSanEe8Y1W0FtXZnjKeXt+w==","shasum":"a046e0765ff1bd435d30768a521ea0fb17d89c7c","tarball":"https://registry.npmjs.org/@akizuki/egg-typegoose/-/egg-typegoose-1.0.0.tgz","fileCount":5,"unpackedSize":7938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdptECRA9TVsSAnZWagAA9C8P+gMHQZT6i1MFhOOe+QiI\nwQZKJr6Cb3otznMI0i3CQdJrC6hK9vShBK1SMbG/Y4j59gFOB4LnzdqhFJlI\nYrXq51aWHx0zSzDKg8wBmftOY59WcfLd/2v+YpVSs1Y+Lzwzs07dO1tG5Yvq\nGQGWWaeMHgyg18cmRoJ9dzYAsLAGlD6kydntv7ba9g65TpsA3sU+g2rmMtRH\nZ0DKmieEHKBA3Y7V1fpOW2N3ncYeFk8lJm/k/JB4Wr9ex/Qn7vcwL44p58sL\n2Kze5Rb83KKjKGUdPs4mCcqBv9JjWQu9GrfPKihhVK/eYJ3ED4Ys2sFm3U2e\nmUGK4doAdPHFs+OcoBYGdRBRm0FmWYumuDTLN71RMksjfG2MhX3PQDVBWiA0\nTYLIXzEfpv3m4lGuBO34MBC7mr/U5z/co/So5r16zKJQnHLN2hvAJVDjDfVo\ndeuQidMozvrPBNOoutI8oXDmAfoGMN41Id3T8c3KN6KdWSLBx5tcb1P7+8QK\nJP9IiEAwPCI2sQPPxj/Kq9kD7RuzZxLi8OfprQCjImgCHYJI39iUXn+rKMyI\nFQ99xTxU55k/AYYiXu1J0ZFEdSUf5viyoYzFGcAc2OOgs1mVlaAVmKl/mlWS\nbhkAhGvvdfYYqIbTEdul/YSM346aKk66RJHRdSF0vMD7K85Hi3TL2eMbk+1K\n0kmW\r\n=YoR6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0HZfgcr6H/QTGfwh8jwBz+S84GmNUfdCa0tyh42LEEAiEAhiwYOVxdunn+XnrKLK4c2gyrxZjxt+JfrFeWdGKdtuY="}]},"_npmUser":{"name":"akizuki","email":"1968304304@qq.com"},"directories":{},"maintainers":[{"name":"akizuki","email":"1968304304@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/egg-typegoose_1.0.0_1618385732297_0.9587442127731172"},"_hasShrinkwrap":false},"1.0.1":{"name":"@akizuki/egg-typegoose","version":"1.0.1","description":"typegoose plugin for Egg.js.","eggPlugin":{"name":"typegoose"},"keywords":["egg","eggPlugin","egg-plugin"],"dependencies":{"@typegoose/typegoose":"^7.6.0","chokidar":"^3.5.1","fs-extra":"^9.1.0","fs-jetpack":"^4.1.0","mongoose":"^5.12.3","prettier":"^2.2.1"},"devDependencies":{"@types/chokidar":"^2.1.3","@types/fs-extra":"^9.0.11","@types/mongoose":"^5.10.4","@types/prettier":"^2.2.3","autod":"^3.0.1","autod-egg":"^1.1.0","egg":"^2.16.0","egg-bin":"^4.11.0","egg-ci":"^1.11.0","egg-mock":"^3.21.0","eslint":"^5.13.0","eslint-config-egg":"^7.1.0","typescript":"^4.2.4"},"engines":{"node":">=8.0.0"},"scripts":{"tsc":"tsc -p tsconfig.json","release":"standard-version"},"ci":{"version":"8, 10"},"repository":{"type":"git","url":"git+https://github.com/shugetsu/egg-typegoose.git"},"bugs":{"url":"https://github.com/eggjs/egg/issues"},"author":{"name":"shugetsu"},"license":"MIT","gitHead":"1814dc18331b16e735a644286dbfee6eb518e97d","homepage":"https://github.com/shugetsu/egg-typegoose#readme","_id":"@akizuki/egg-typegoose@1.0.1","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ZnArCSeEPtup/+fIEtO8L6bn8yqdopH/MiiJjPtlesKGanjePRI1a1zKgBojcS9m26f+8iMnjkHlRFudG//Xvw==","shasum":"d3ee2ec21fe6e389793eb834835cceb27ecd0b39","tarball":"https://registry.npmjs.org/@akizuki/egg-typegoose/-/egg-typegoose-1.0.1.tgz","fileCount":5,"unpackedSize":7091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdqIECRA9TVsSAnZWagAATDIQAIdmjRKB40P/W53j7azN\nmI9HQLmcIOgDsgHR4+s89+9DhBtUb21RCdt9wbGcwMZgUgFagitlO58dvwsc\nrxg90D9o+sv6IHVUcvOhQtg7bLbnUyFq5dh0K1y6NuP3szbxlBzVGMsaIvZw\nI7Px6G0Dac+xVT4sBL3npqXnS+o29yHaWamn2f86C/6lC2mcZFgsHdIHXnou\ntgYNXHNx8HyRSza0Bqw+DQj2tG68cAi2dMeYS+chEXgEh8vc9WhFgT/y8ydd\n9AOANowr0fqd41Xq7Gfy5XpQkuoNUFRaPfOjB4I3LBSCkgJfOv/uJaLn9931\nR2fEB4zUwa1tJbxyBVQN0GIeQBaiwwjClkQK1qxdV2Ye+C5MnL4rCUxpdBEz\nDDb8QeeG9drIde7I3ap6dMXd8VGTcPD9PARLCPFjhcmCIxIDRFjl04KOpQcz\nX09JxYUz3HqJpKJUlNvHaEsAmqpCkmc19dvIiSajVXSbtJmRFAE2LYQZVMJi\nrBAgINt7o6gXwUMjNGlthLxDf+hpw2ikW4C7fgwo/So7VVgHEVUm4PtCMOlQ\nJfiYkU33/MWYHdMfV79oKrTemtuKbDfMsamx6oDXKqPeU+vWYjDj//2VXlQE\nrX0521siqw6OnduPmT4+ak2Pic1Kym8RkFrlRBY5uGsNU4hU5v2cr3WXc5BD\n/YPy\r\n=ndr/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcnYqNOB8n7VM4J6l9lkYsl3xffbvrkUdGfhCIBBt9ngIgeVQnh4Xsz/fMj0Ex0MiX/x58ZNvbnN/ont68j+JOv/Q="}]},"_npmUser":{"name":"akizuki","email":"1968304304@qq.com"},"directories":{},"maintainers":[{"name":"akizuki","email":"1968304304@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/egg-typegoose_1.0.1_1618387459904_0.9392435967960793"},"_hasShrinkwrap":false}},"time":{"created":"2021-04-14T07:35:32.217Z","1.0.0":"2021-04-14T07:35:32.418Z","modified":"2022-04-04T12:29:56.345Z","1.0.1":"2021-04-14T08:04:20.018Z"},"maintainers":[{"name":"akizuki","email":"1968304304@qq.com"}],"description":"typegoose plugin for Egg.js.","homepage":"https://github.com/shugetsu/egg-typegoose#readme","keywords":["egg","eggPlugin","egg-plugin"],"repository":{"type":"git","url":"git+https://github.com/shugetsu/egg-typegoose.git"},"author":{"name":"shugetsu"},"bugs":{"url":"https://github.com/eggjs/egg/issues"},"license":"MIT","readme":"# egg-typegoose\r\n\r\n[![NPM version][npm-image]][npm-url]\r\n[![npm download][download-image]][download-url]\r\n\r\n[npm-image]: https://img.shields.io/npm/v/egg-typegoose.svg?style=flat-square\r\n[npm-url]: https://npmjs.org/package/egg-typegoose\r\n[download-image]: https://img.shields.io/npm/dm/egg-typegoose.svg?style=flat-square\r\n[download-url]: https://npmjs.org/package/egg-typegoose\r\n\r\n<!--\r\nDescription here.\r\n-->\r\n\r\n## Install\r\n\r\n```bash\r\n$ npm i @akizuki/egg-typegoose --save\r\n```\r\n\r\n## Usage\r\n\r\n```js\r\n// {app_root}/config/plugin.ts\r\nexports.typegoose = {\r\n  enable: true,\r\n  package: 'egg-typegoose',\r\n};\r\n```\r\n\r\n## Configuration\r\n\r\n```js\r\n// {app_root}/config/config.default.ts\r\nexports.typegoose = { \r\n  url: 'mongodb://localhost:27017/test',\r\n  options: {},\r\n  modelWhitelist: ['BaseModel'], // 文件白名单列表, 不挂载到ctx.model\r\n};\r\n```\r\n\r\nsee [config/config.default.ts](config/config.default.ts) for more detail.\r\n\r\n## Example\r\n\r\n```js\r\n├── controller\r\n│    └── user.ts\r\n├── model\r\n│    ├── BaseModel.ts\r\n│    └── User.ts\r\n├── service\r\n│    └── user.ts\r\n├── router.ts\r\n```\r\n\r\n```js\r\n// {app_root}/app/controller/user.ts\r\nimport { Controller } from 'egg';\r\nimport User from '../model/User';\r\n\r\n/**\r\n * User Controller\r\n */\r\nexport default class UserController extends Controller {\r\n  /**\r\n   * 创建用户\r\n   */\r\n  public async createUser() {\r\n    const { ctx } = this;\r\n    const user = new User();\r\n    user.email = 'test@qq.com';\r\n    user.nickname = 'YuYin';\r\n    const result = await ctx.service.user.createUser(user);\r\n    ctx.body = result;\r\n  }\r\n\r\n  /**\r\n   * 根据 email 获取用户\r\n   */\r\n  public async getUserByEmail() {\r\n    const { ctx } = this;\r\n    const email = 'test@qq.com';\r\n    const result = await ctx.service.user.getUserByEmail(email);\r\n    ctx.body = result;\r\n  }\r\n}\r\n```\r\n\r\n```js\r\n// {app_root}/app/model/BaseModel.ts\r\nimport { prop, pre } from '@typegoose/typegoose';\r\n\r\n@pre<BaseModel>('save', function(next) {\r\n  if (!this.createdAt || this.isNew) {\r\n    this.createdAt = this.updatedAt = new Date();\r\n  } else {\r\n    this.updatedAt = new Date();\r\n  }\r\n  next();\r\n})\r\n\r\n/**\r\n * Base Model\r\n */\r\nclass BaseModel {\r\n  /**\r\n   * 创建时间\r\n   */\r\n  @prop()\r\n  createdAt: Date;\r\n\r\n  /**\r\n   * 更新时间\r\n   */\r\n  @prop()\r\n  updatedAt: Date;\r\n}\r\n\r\nexport default BaseModel;\r\n```\r\n\r\n```js\r\n// {app_root}/app/model/User.ts\r\nimport { prop } from '@typegoose/typegoose';\r\nimport BaseModel from './BaseModel';\r\n\r\n/**\r\n * User Model\r\n */\r\nexport class User extends BaseModel {\r\n  /**\r\n   * 邮箱\r\n   */\r\n  @prop({ required: true, unique: true })\r\n  email!: string;\r\n\r\n  /**\r\n   * 昵称\r\n   */\r\n  @prop()\r\n  nickname?: string;\r\n}\r\n\r\nexport default User;\r\n```\r\n\r\n```js\r\n// {app_root}/app/service/User.ts\r\nimport { Service } from 'egg';\r\nimport User from '../model/User';\r\n\r\n/**\r\n * User Service\r\n */\r\nexport default class UserService extends Service {\r\n  /**\r\n   * 创建用户\r\n   * @param user User\r\n   */\r\n  public async createUser(user: User) {\r\n    const { ctx } = this;\r\n    const result = await ctx.model.User.create(user);\r\n    return result;\r\n  }\r\n  \r\n  /**\r\n   * 根据 email 获取用户\r\n   * @param email 邮箱\r\n   */\r\n  public async getUserByEmail(email: string) {\r\n    const { ctx } = this;\r\n    const result = await ctx.model.User.findOne({ email });\r\n    return result;\r\n  }\r\n}\r\n```\r\n\r\n```js\r\n// {app_root}/app/router.ts\r\nimport { Application } from 'egg';\r\n\r\nexport default (app: Application) => {\r\n  const { controller, router } = app;\r\n\r\n  router.post('/user/createUser', controller.user.createUser);\r\n  router.get('/user/getUserByEmail', controller.user.getUserByEmail);\r\n};\r\n```\r\n\r\n## Questions & Suggestions\r\n\r\nPlease open an issue [here](https://github.com/eggjs/egg/issues).\r\n\r\n## License\r\n\r\n[MIT](LICENSE)\r\n","readmeFilename":"README.md"}