[{"title":"(52个子文件129KB)backend-postgres-typescript-node-express:PostgreSQL,TypeScript,Node.js和Express.js堆栈-源码","children":[{"title":"backend-postgres-typescript-node-express-master","children":[{"title":".eslintrc <span style='color:#111;'>506B</span>","children":null,"spread":false},{"title":"package.json <span style='color:#111;'>2.01KB</span>","children":null,"spread":false},{"title":"ormconfig.ts <span style='color:#111;'>586B</span>","children":null,"spread":false},{"title":".prettierrc <span style='color:#111;'>107B</span>","children":null,"spread":false},{"title":"custom.d.ts <span style='color:#111;'>980B</span>","children":null,"spread":false},{"title":"jest.config.js <span style='color:#111;'>437B</span>","children":null,"spread":false},{"title":"LICENSE <span style='color:#111;'>1.06KB</span>","children":null,"spread":false},{"title":"package-lock.json <span style='color:#111;'>431.32KB</span>","children":null,"spread":false},{"title":".env.example <span style='color:#111;'>285B</span>","children":null,"spread":false},{"title":"src","children":[{"title":"config","children":[{"title":"index.ts <span style='color:#111;'>1.74KB</span>","children":null,"spread":false}],"spread":true},{"title":"__tests__","children":[{"title":"config","children":[{"title":"helpers.ts <span style='color:#111;'>104B</span>","children":null,"spread":false},{"title":"database.ts <span style='color:#111;'>137B</span>","children":null,"spread":false},{"title":"teardown.ts <span style='color:#111;'>64B</span>","children":null,"spread":false},{"title":"setup.ts <span style='color:#111;'>282B</span>","children":null,"spread":false}],"spread":true},{"title":"packages","children":[{"title":"database","children":[{"title":"models","children":[{"title":"user.test.ts <span style='color:#111;'>457B</span>","children":null,"spread":false}],"spread":false},{"title":"helpers","children":[{"title":"withTimestamp.test.ts <span style='color:#111;'>988B</span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"api","children":[{"title":"resources","children":[{"title":"users","children":[{"title":"controller.test.ts <span style='color:#111;'>286B</span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"helpers","children":[{"title":"exceptions","children":[{"title":"badRequest.test.ts <span style='color:#111;'>361B</span>","children":null,"spread":false},{"title":"APIException.test.ts <span style='color:#111;'>752B</span>","children":null,"spread":false},{"title":"forbidden.test.ts <span style='color:#111;'>342B</span>","children":null,"spread":false},{"title":"unauthorized.test.ts <span style='color:#111;'>354B</span>","children":null,"spread":false},{"title":"invalidParameter.test.ts <span style='color:#111;'>369B</span>","children":null,"spread":false},{"title":"notFound.test.ts <span style='color:#111;'>339B</span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true},{"title":"server.ts <span style='color:#111;'>933B</span>","children":null,"spread":false},{"title":"packages","children":[{"title":"database","children":[{"title":"models","children":[{"title":"user.ts <span style='color:#111;'>537B</span>","children":null,"spread":false}],"spread":false},{"title":"migrations","children":[{"title":"1582816030292-CreateDatabaseSchema.ts <span style='color:#111;'>686B</span>","children":null,"spread":false},{"title":"1582755522303-SetDatabaseTimezoneToUTC.ts <span style='color:#111;'>392B</span>","children":null,"spread":false},{"title":"1582755083935-InstallUUIDExtension.ts <span style='color:#111;'>415B</span>","children":null,"spread":false},{"title":"1582815723334-InstallDatabaseAudit.ts <span style='color:#111;'>449B</span>","children":null,"spread":false},{"title":"1582820170145-AddUsersTable.ts <span style='color:#111;'>1.03KB</span>","children":null,"spread":false}],"spread":false},{"title":"index.ts <span style='color:#111;'>395B</span>","children":null,"spread":false},{"title":"helpers","children":[{"title":"withTimestampsMigration.ts <span style='color:#111;'>611B</span>","children":null,"spread":false},{"title":"installDatabaseAudit.ts <span style='color:#111;'>11.67KB</span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"api","children":[{"title":"resources","children":[{"title":"users","children":[{"title":"controller.ts <span style='color:#111;'>726B</span>","children":null,"spread":false},{"title":"validation.ts <span style='color:#111;'>114B</span>","children":null,"spread":false},{"title":"index.ts <span style='color:#111;'>227B</span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"router.ts <span style='color:#111;'>187B</span>","children":null,"spread":false},{"title":"helpers","children":[{"title":"exceptions","children":[{"title":"notFound.ts <span style='color:#111;'>253B</span>","children":null,"spread":false},{"title":"invalidParameter.ts <span style='color:#111;'>269B</span>","children":null,"spread":false},{"title":"unauthorized.ts <span style='color:#111;'>263B</span>","children":null,"spread":false},{"title":"APIException.ts <span style='color:#111;'>476B</span>","children":null,"spread":false},{"title":"forbidden.ts <span style='color:#111;'>254B</span>","children":null,"spread":false},{"title":"index.ts <span style='color:#111;'>259B</span>","children":null,"spread":false},{"title":"badRequest.ts <span style='color:#111;'>273B</span>","children":null,"spread":false}],"spread":false},{"title":"logging","children":[{"title":"index.ts <span style='color:#111;'>1.17KB</span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"middlewares","children":[{"title":"validation.ts <span style='color:#111;'>374B</span>","children":null,"spread":false},{"title":"error.ts <span style='color:#111;'>1.65KB</span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":"index.ts <span style='color:#111;'>725B</span>","children":null,"spread":false}],"spread":true},{"title":"tsconfig.json <span style='color:#111;'>369B</span>","children":null,"spread":false},{"title":".gitignore <span style='color:#111;'>103B</span>","children":null,"spread":false},{"title":"README.md <span style='color:#111;'>2.60KB</span>","children":null,"spread":false},{"title":"nodemon.json <span style='color:#111;'>194B</span>","children":null,"spread":false}],"spread":false}],"spread":true}]