From 25ab8e7bef27da6516bca80e6e99fd55cb00d0b1 Mon Sep 17 00:00:00 2001 From: Jim LAURIE Date: Fri, 5 Oct 2018 17:24:17 +0200 Subject: [PATCH] Add base /documentation --- docs/.vuepress/config.js | 1 + docs/.vuepress/dist/1.x.x/SUMMARY.html | 23 + docs/.vuepress/dist/1.x.x/admin.html | 41 ++ docs/.vuepress/dist/1.x.x/blueprints.html | 189 ++++++ docs/.vuepress/dist/1.x.x/cli.html | 49 ++ docs/.vuepress/dist/1.x.x/configuration.html | 313 ++++++++++ docs/.vuepress/dist/1.x.x/context.html | 67 +++ docs/.vuepress/dist/1.x.x/customization.html | 53 ++ docs/.vuepress/dist/1.x.x/email.html | 85 +++ docs/.vuepress/dist/1.x.x/graphql.html | 79 +++ docs/.vuepress/dist/1.x.x/index.html | 45 ++ .../dist/1.x.x/internationalization.html | 74 +++ docs/.vuepress/dist/1.x.x/introduction.html | 80 +++ docs/.vuepress/dist/1.x.x/logging.html | 73 +++ docs/.vuepress/dist/1.x.x/models.html | 416 ++++++++++++++ docs/.vuepress/dist/1.x.x/queries.html | 311 ++++++++++ docs/.vuepress/dist/1.x.x/request.html | 174 ++++++ docs/.vuepress/dist/1.x.x/response.html | 94 +++ docs/.vuepress/dist/1.x.x/router.html | 132 +++++ docs/.vuepress/dist/1.x.x/services.html | 66 +++ docs/.vuepress/dist/1.x.x/sessions.html | 58 ++ docs/.vuepress/dist/1.x.x/testing.html | 85 +++ docs/.vuepress/dist/1.x.x/upload.html | 77 +++ docs/.vuepress/dist/1.x.x/users.html | 66 +++ docs/.vuepress/dist/1.x.x/views.html | 67 +++ docs/.vuepress/dist/3.x.x/SUMMARY.html | 23 + .../dist/3.x.x/advanced/customize-admin.html | 164 ++++++ docs/.vuepress/dist/3.x.x/advanced/hooks.html | 110 ++++ .../dist/3.x.x/advanced/logging.html | 66 +++ .../dist/3.x.x/advanced/middlewares.html | 142 +++++ .../dist/3.x.x/advanced/usage-tracking.html | 30 + .../dist/3.x.x/api-reference/reference.html | 30 + docs/.vuepress/dist/3.x.x/cli/CLI.html | 79 +++ .../dist/3.x.x/concepts/concepts.html | 70 +++ .../3.x.x/configurations/configurations.html | 185 ++++++ .../3.x.x/getting-started/installation.html | 31 + .../3.x.x/getting-started/quick-start.html | 91 +++ .../dist/3.x.x/guides/authentication.html | 126 ++++ .../dist/3.x.x/guides/controllers.html | 44 ++ .../dist/3.x.x/guides/deployment.html | 42 ++ docs/.vuepress/dist/3.x.x/guides/email.html | 38 ++ docs/.vuepress/dist/3.x.x/guides/filters.html | 55 ++ docs/.vuepress/dist/3.x.x/guides/graphql.html | 414 ++++++++++++++ docs/.vuepress/dist/3.x.x/guides/i18n.html | 50 ++ docs/.vuepress/dist/3.x.x/guides/models.html | 408 +++++++++++++ .../.vuepress/dist/3.x.x/guides/policies.html | 97 ++++ .../dist/3.x.x/guides/public-assets.html | 29 + .../.vuepress/dist/3.x.x/guides/requests.html | 164 ++++++ .../dist/3.x.x/guides/responses.html | 365 ++++++++++++ docs/.vuepress/dist/3.x.x/guides/restapi.html | 49 ++ docs/.vuepress/dist/3.x.x/guides/routing.html | 68 +++ .../.vuepress/dist/3.x.x/guides/services.html | 63 ++ docs/.vuepress/dist/3.x.x/guides/upload.html | 90 +++ docs/.vuepress/dist/3.x.x/index.html | 32 ++ .../migration-guide-alpha-10-to-alpha-11.html | 30 + .../migration-guide-alpha-11-to-alpha-12.html | 57 ++ .../migration-guide-alpha-7-4-to-alpha-8.html | 39 ++ .../migration-guide-alpha-8-to-alpha-9.html | 35 ++ .../migration-guide-alpha-9-to-alpha-10.html | 30 + .../dist/3.x.x/migration/migration-guide.html | 265 +++++++++ .../backend-development.html | 111 ++++ .../frontend-development.html | 77 +++ .../frontend-use-cases.html | 541 ++++++++++++++++++ .../plugin-architecture.html | 55 ++ .../plugin-development/plugin-left-menu.html | 135 +++++ .../3.x.x/plugin-development/quick-start.html | 23 + .../plugin-development/ui-components.html | 23 + .../dist/3.x.x/plugin-development/utils.html | 356 ++++++++++++ .../.vuepress/dist/3.x.x/tutorials/index.html | 26 + docs/.vuepress/dist/404.html | 17 + .../dist/assets/css/1.styles.77d89b12.css | 0 .../dist/assets/css/2.styles.08038ddb.css | 1 + .../dist/assets/css/styles.a8210063.css | 1 + .../getting-started_add_entry.5ce15d30.png | Bin 0 -> 125813 bytes .../getting-started_allow_access.ea852994.png | Bin 0 -> 294849 bytes ...g-started_create_content_type.f4e658ac.png | Bin 0 -> 148411 bytes .../getting-started_list_fields.ecdf11cf.png | Bin 0 -> 138253 bytes ...ting-started_manage_role_home.11fb8455.png | Bin 0 -> 122683 bytes ...tting-started_no_content_type.144f7dab.png | Bin 0 -> 130776 bytes .../img/getting-started_no_entry.aef6f603.png | Bin 0 -> 124676 bytes .../img/getting-started_register.e656c1ff.png | Bin 0 -> 116786 bytes .../getting-started_with_entry.423d6421.png | Bin 0 -> 133700 bytes .../dist/assets/img/search.83621669.svg | 1 + .../dist/assets/img/terminal_new.3f7e23c3.png | Bin 0 -> 149517 bytes .../assets/img/terminal_start.b3a7364f.png | Bin 0 -> 260253 bytes docs/.vuepress/dist/assets/js/1.77d89b12.js | 1 + docs/.vuepress/dist/assets/js/10.f9e7d997.js | 1 + docs/.vuepress/dist/assets/js/11.bfb9de0f.js | 1 + docs/.vuepress/dist/assets/js/12.124227d1.js | 1 + docs/.vuepress/dist/assets/js/13.d8092700.js | 1 + docs/.vuepress/dist/assets/js/14.7cfd4cb8.js | 1 + docs/.vuepress/dist/assets/js/15.55a20f7c.js | 1 + docs/.vuepress/dist/assets/js/16.5c84c402.js | 1 + docs/.vuepress/dist/assets/js/17.1c93d494.js | 1 + docs/.vuepress/dist/assets/js/18.e1f1758f.js | 1 + docs/.vuepress/dist/assets/js/19.8d1b00cd.js | 1 + docs/.vuepress/dist/assets/js/2.08038ddb.js | 1 + docs/.vuepress/dist/assets/js/20.856d7bdd.js | 1 + docs/.vuepress/dist/assets/js/21.6f851286.js | 1 + docs/.vuepress/dist/assets/js/22.7ddb4e1d.js | 1 + docs/.vuepress/dist/assets/js/23.15e5a0c3.js | 1 + docs/.vuepress/dist/assets/js/24.6fdf34d0.js | 1 + docs/.vuepress/dist/assets/js/25.21c9a549.js | 1 + docs/.vuepress/dist/assets/js/26.6608295c.js | 1 + docs/.vuepress/dist/assets/js/27.2c9596ea.js | 1 + docs/.vuepress/dist/assets/js/28.9b077c15.js | 1 + docs/.vuepress/dist/assets/js/29.8ea8ecc1.js | 1 + docs/.vuepress/dist/assets/js/3.4d92d5e3.js | 1 + docs/.vuepress/dist/assets/js/30.5d2829b8.js | 1 + docs/.vuepress/dist/assets/js/31.fad00a3a.js | 1 + docs/.vuepress/dist/assets/js/32.a6900221.js | 1 + docs/.vuepress/dist/assets/js/33.bbfb3084.js | 1 + docs/.vuepress/dist/assets/js/34.0eb2f8aa.js | 1 + docs/.vuepress/dist/assets/js/35.76c29241.js | 1 + docs/.vuepress/dist/assets/js/36.dfcc07a1.js | 1 + docs/.vuepress/dist/assets/js/37.173a8112.js | 1 + docs/.vuepress/dist/assets/js/38.b86fac79.js | 1 + docs/.vuepress/dist/assets/js/39.a7d50afe.js | 1 + docs/.vuepress/dist/assets/js/4.385ae6a0.js | 1 + docs/.vuepress/dist/assets/js/40.0415492d.js | 1 + docs/.vuepress/dist/assets/js/41.5ef681df.js | 1 + docs/.vuepress/dist/assets/js/42.fdd80522.js | 1 + docs/.vuepress/dist/assets/js/43.03b496f2.js | 1 + docs/.vuepress/dist/assets/js/44.3f55a367.js | 1 + docs/.vuepress/dist/assets/js/45.6746c3dc.js | 1 + docs/.vuepress/dist/assets/js/46.ff6bc353.js | 1 + docs/.vuepress/dist/assets/js/47.53b7147a.js | 1 + docs/.vuepress/dist/assets/js/48.31a883aa.js | 1 + docs/.vuepress/dist/assets/js/49.18bd1a60.js | 1 + docs/.vuepress/dist/assets/js/5.edd21cb3.js | 1 + docs/.vuepress/dist/assets/js/50.9b6079cd.js | 1 + docs/.vuepress/dist/assets/js/51.b67aee1b.js | 1 + docs/.vuepress/dist/assets/js/52.62bc63b6.js | 1 + docs/.vuepress/dist/assets/js/53.2c567c55.js | 1 + docs/.vuepress/dist/assets/js/54.6cc10d25.js | 1 + docs/.vuepress/dist/assets/js/55.7faca13f.js | 1 + docs/.vuepress/dist/assets/js/56.0b06ad54.js | 1 + docs/.vuepress/dist/assets/js/57.a87c48df.js | 1 + docs/.vuepress/dist/assets/js/58.1c6547d9.js | 1 + docs/.vuepress/dist/assets/js/59.06f908d7.js | 1 + docs/.vuepress/dist/assets/js/6.fd6e4b24.js | 1 + docs/.vuepress/dist/assets/js/60.b5156b8d.js | 1 + docs/.vuepress/dist/assets/js/61.1d5cafa9.js | 1 + docs/.vuepress/dist/assets/js/62.ccacebe2.js | 1 + docs/.vuepress/dist/assets/js/63.66946dde.js | 1 + docs/.vuepress/dist/assets/js/64.d53bdeb7.js | 1 + docs/.vuepress/dist/assets/js/65.0cd2da1f.js | 1 + docs/.vuepress/dist/assets/js/66.03059dce.js | 1 + docs/.vuepress/dist/assets/js/67.6f988923.js | 1 + docs/.vuepress/dist/assets/js/68.303c1a05.js | 1 + docs/.vuepress/dist/assets/js/69.3f4ed952.js | 1 + docs/.vuepress/dist/assets/js/7.e1f45fa9.js | 1 + docs/.vuepress/dist/assets/js/70.531d76be.js | 1 + docs/.vuepress/dist/assets/js/71.ab3e74fc.js | 1 + docs/.vuepress/dist/assets/js/8.dc78e1c2.js | 1 + docs/.vuepress/dist/assets/js/9.fd6a21e6.js | 1 + docs/.vuepress/dist/assets/js/app.a8210063.js | 8 + docs/.vuepress/dist/index.html | 23 + 158 files changed, 7798 insertions(+) create mode 100644 docs/.vuepress/dist/1.x.x/SUMMARY.html create mode 100644 docs/.vuepress/dist/1.x.x/admin.html create mode 100644 docs/.vuepress/dist/1.x.x/blueprints.html create mode 100644 docs/.vuepress/dist/1.x.x/cli.html create mode 100644 docs/.vuepress/dist/1.x.x/configuration.html create mode 100644 docs/.vuepress/dist/1.x.x/context.html create mode 100644 docs/.vuepress/dist/1.x.x/customization.html create mode 100644 docs/.vuepress/dist/1.x.x/email.html create mode 100644 docs/.vuepress/dist/1.x.x/graphql.html create mode 100644 docs/.vuepress/dist/1.x.x/index.html create mode 100644 docs/.vuepress/dist/1.x.x/internationalization.html create mode 100644 docs/.vuepress/dist/1.x.x/introduction.html create mode 100644 docs/.vuepress/dist/1.x.x/logging.html create mode 100644 docs/.vuepress/dist/1.x.x/models.html create mode 100644 docs/.vuepress/dist/1.x.x/queries.html create mode 100644 docs/.vuepress/dist/1.x.x/request.html create mode 100644 docs/.vuepress/dist/1.x.x/response.html create mode 100644 docs/.vuepress/dist/1.x.x/router.html create mode 100644 docs/.vuepress/dist/1.x.x/services.html create mode 100644 docs/.vuepress/dist/1.x.x/sessions.html create mode 100644 docs/.vuepress/dist/1.x.x/testing.html create mode 100644 docs/.vuepress/dist/1.x.x/upload.html create mode 100644 docs/.vuepress/dist/1.x.x/users.html create mode 100644 docs/.vuepress/dist/1.x.x/views.html create mode 100644 docs/.vuepress/dist/3.x.x/SUMMARY.html create mode 100644 docs/.vuepress/dist/3.x.x/advanced/customize-admin.html create mode 100644 docs/.vuepress/dist/3.x.x/advanced/hooks.html create mode 100644 docs/.vuepress/dist/3.x.x/advanced/logging.html create mode 100644 docs/.vuepress/dist/3.x.x/advanced/middlewares.html create mode 100644 docs/.vuepress/dist/3.x.x/advanced/usage-tracking.html create mode 100644 docs/.vuepress/dist/3.x.x/api-reference/reference.html create mode 100644 docs/.vuepress/dist/3.x.x/cli/CLI.html create mode 100644 docs/.vuepress/dist/3.x.x/concepts/concepts.html create mode 100644 docs/.vuepress/dist/3.x.x/configurations/configurations.html create mode 100644 docs/.vuepress/dist/3.x.x/getting-started/installation.html create mode 100644 docs/.vuepress/dist/3.x.x/getting-started/quick-start.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/authentication.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/controllers.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/deployment.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/email.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/filters.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/graphql.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/i18n.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/models.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/policies.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/public-assets.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/requests.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/responses.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/restapi.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/routing.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/services.html create mode 100644 docs/.vuepress/dist/3.x.x/guides/upload.html create mode 100644 docs/.vuepress/dist/3.x.x/index.html create mode 100644 docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-10-to-alpha-11.html create mode 100644 docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-11-to-alpha-12.html create mode 100644 docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-7-4-to-alpha-8.html create mode 100644 docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-8-to-alpha-9.html create mode 100644 docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-9-to-alpha-10.html create mode 100644 docs/.vuepress/dist/3.x.x/migration/migration-guide.html create mode 100644 docs/.vuepress/dist/3.x.x/plugin-development/backend-development.html create mode 100644 docs/.vuepress/dist/3.x.x/plugin-development/frontend-development.html create mode 100644 docs/.vuepress/dist/3.x.x/plugin-development/frontend-use-cases.html create mode 100644 docs/.vuepress/dist/3.x.x/plugin-development/plugin-architecture.html create mode 100644 docs/.vuepress/dist/3.x.x/plugin-development/plugin-left-menu.html create mode 100644 docs/.vuepress/dist/3.x.x/plugin-development/quick-start.html create mode 100644 docs/.vuepress/dist/3.x.x/plugin-development/ui-components.html create mode 100644 docs/.vuepress/dist/3.x.x/plugin-development/utils.html create mode 100644 docs/.vuepress/dist/3.x.x/tutorials/index.html create mode 100644 docs/.vuepress/dist/404.html create mode 100644 docs/.vuepress/dist/assets/css/1.styles.77d89b12.css create mode 100644 docs/.vuepress/dist/assets/css/2.styles.08038ddb.css create mode 100644 docs/.vuepress/dist/assets/css/styles.a8210063.css create mode 100644 docs/.vuepress/dist/assets/img/getting-started_add_entry.5ce15d30.png create mode 100644 docs/.vuepress/dist/assets/img/getting-started_allow_access.ea852994.png create mode 100644 docs/.vuepress/dist/assets/img/getting-started_create_content_type.f4e658ac.png create mode 100644 docs/.vuepress/dist/assets/img/getting-started_list_fields.ecdf11cf.png create mode 100644 docs/.vuepress/dist/assets/img/getting-started_manage_role_home.11fb8455.png create mode 100644 docs/.vuepress/dist/assets/img/getting-started_no_content_type.144f7dab.png create mode 100644 docs/.vuepress/dist/assets/img/getting-started_no_entry.aef6f603.png create mode 100644 docs/.vuepress/dist/assets/img/getting-started_register.e656c1ff.png create mode 100644 docs/.vuepress/dist/assets/img/getting-started_with_entry.423d6421.png create mode 100644 docs/.vuepress/dist/assets/img/search.83621669.svg create mode 100644 docs/.vuepress/dist/assets/img/terminal_new.3f7e23c3.png create mode 100644 docs/.vuepress/dist/assets/img/terminal_start.b3a7364f.png create mode 100644 docs/.vuepress/dist/assets/js/1.77d89b12.js create mode 100644 docs/.vuepress/dist/assets/js/10.f9e7d997.js create mode 100644 docs/.vuepress/dist/assets/js/11.bfb9de0f.js create mode 100644 docs/.vuepress/dist/assets/js/12.124227d1.js create mode 100644 docs/.vuepress/dist/assets/js/13.d8092700.js create mode 100644 docs/.vuepress/dist/assets/js/14.7cfd4cb8.js create mode 100644 docs/.vuepress/dist/assets/js/15.55a20f7c.js create mode 100644 docs/.vuepress/dist/assets/js/16.5c84c402.js create mode 100644 docs/.vuepress/dist/assets/js/17.1c93d494.js create mode 100644 docs/.vuepress/dist/assets/js/18.e1f1758f.js create mode 100644 docs/.vuepress/dist/assets/js/19.8d1b00cd.js create mode 100644 docs/.vuepress/dist/assets/js/2.08038ddb.js create mode 100644 docs/.vuepress/dist/assets/js/20.856d7bdd.js create mode 100644 docs/.vuepress/dist/assets/js/21.6f851286.js create mode 100644 docs/.vuepress/dist/assets/js/22.7ddb4e1d.js create mode 100644 docs/.vuepress/dist/assets/js/23.15e5a0c3.js create mode 100644 docs/.vuepress/dist/assets/js/24.6fdf34d0.js create mode 100644 docs/.vuepress/dist/assets/js/25.21c9a549.js create mode 100644 docs/.vuepress/dist/assets/js/26.6608295c.js create mode 100644 docs/.vuepress/dist/assets/js/27.2c9596ea.js create mode 100644 docs/.vuepress/dist/assets/js/28.9b077c15.js create mode 100644 docs/.vuepress/dist/assets/js/29.8ea8ecc1.js create mode 100644 docs/.vuepress/dist/assets/js/3.4d92d5e3.js create mode 100644 docs/.vuepress/dist/assets/js/30.5d2829b8.js create mode 100644 docs/.vuepress/dist/assets/js/31.fad00a3a.js create mode 100644 docs/.vuepress/dist/assets/js/32.a6900221.js create mode 100644 docs/.vuepress/dist/assets/js/33.bbfb3084.js create mode 100644 docs/.vuepress/dist/assets/js/34.0eb2f8aa.js create mode 100644 docs/.vuepress/dist/assets/js/35.76c29241.js create mode 100644 docs/.vuepress/dist/assets/js/36.dfcc07a1.js create mode 100644 docs/.vuepress/dist/assets/js/37.173a8112.js create mode 100644 docs/.vuepress/dist/assets/js/38.b86fac79.js create mode 100644 docs/.vuepress/dist/assets/js/39.a7d50afe.js create mode 100644 docs/.vuepress/dist/assets/js/4.385ae6a0.js create mode 100644 docs/.vuepress/dist/assets/js/40.0415492d.js create mode 100644 docs/.vuepress/dist/assets/js/41.5ef681df.js create mode 100644 docs/.vuepress/dist/assets/js/42.fdd80522.js create mode 100644 docs/.vuepress/dist/assets/js/43.03b496f2.js create mode 100644 docs/.vuepress/dist/assets/js/44.3f55a367.js create mode 100644 docs/.vuepress/dist/assets/js/45.6746c3dc.js create mode 100644 docs/.vuepress/dist/assets/js/46.ff6bc353.js create mode 100644 docs/.vuepress/dist/assets/js/47.53b7147a.js create mode 100644 docs/.vuepress/dist/assets/js/48.31a883aa.js create mode 100644 docs/.vuepress/dist/assets/js/49.18bd1a60.js create mode 100644 docs/.vuepress/dist/assets/js/5.edd21cb3.js create mode 100644 docs/.vuepress/dist/assets/js/50.9b6079cd.js create mode 100644 docs/.vuepress/dist/assets/js/51.b67aee1b.js create mode 100644 docs/.vuepress/dist/assets/js/52.62bc63b6.js create mode 100644 docs/.vuepress/dist/assets/js/53.2c567c55.js create mode 100644 docs/.vuepress/dist/assets/js/54.6cc10d25.js create mode 100644 docs/.vuepress/dist/assets/js/55.7faca13f.js create mode 100644 docs/.vuepress/dist/assets/js/56.0b06ad54.js create mode 100644 docs/.vuepress/dist/assets/js/57.a87c48df.js create mode 100644 docs/.vuepress/dist/assets/js/58.1c6547d9.js create mode 100644 docs/.vuepress/dist/assets/js/59.06f908d7.js create mode 100644 docs/.vuepress/dist/assets/js/6.fd6e4b24.js create mode 100644 docs/.vuepress/dist/assets/js/60.b5156b8d.js create mode 100644 docs/.vuepress/dist/assets/js/61.1d5cafa9.js create mode 100644 docs/.vuepress/dist/assets/js/62.ccacebe2.js create mode 100644 docs/.vuepress/dist/assets/js/63.66946dde.js create mode 100644 docs/.vuepress/dist/assets/js/64.d53bdeb7.js create mode 100644 docs/.vuepress/dist/assets/js/65.0cd2da1f.js create mode 100644 docs/.vuepress/dist/assets/js/66.03059dce.js create mode 100644 docs/.vuepress/dist/assets/js/67.6f988923.js create mode 100644 docs/.vuepress/dist/assets/js/68.303c1a05.js create mode 100644 docs/.vuepress/dist/assets/js/69.3f4ed952.js create mode 100644 docs/.vuepress/dist/assets/js/7.e1f45fa9.js create mode 100644 docs/.vuepress/dist/assets/js/70.531d76be.js create mode 100644 docs/.vuepress/dist/assets/js/71.ab3e74fc.js create mode 100644 docs/.vuepress/dist/assets/js/8.dc78e1c2.js create mode 100644 docs/.vuepress/dist/assets/js/9.fd6a21e6.js create mode 100644 docs/.vuepress/dist/assets/js/app.a8210063.js create mode 100644 docs/.vuepress/dist/index.html diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 6a251ed895..24b463928f 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -14,6 +14,7 @@ module.exports = { }, title: 'Strapi Docs', description: 'API creation made simple, secure and fast.', + base: '/documentation/', themeConfig: { versions: [ ['Version 3.x.x', '/3.x.x/'], diff --git a/docs/.vuepress/dist/1.x.x/SUMMARY.html b/docs/.vuepress/dist/1.x.x/SUMMARY.html new file mode 100644 index 0000000000..b390c82f57 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/SUMMARY.html @@ -0,0 +1,23 @@ + + + + + + Summary | Strapi Docs + + + + + + + +
+ + + diff --git a/docs/.vuepress/dist/1.x.x/admin.html b/docs/.vuepress/dist/1.x.x/admin.html new file mode 100644 index 0000000000..aa92ddf175 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/admin.html @@ -0,0 +1,41 @@ + + + + + + Admin | Strapi Docs + + + + + + + +

Admin

Where is my data ?

This is a recurring question when you create web applications from scratch or +using a web framework. That's why Strapi provides a ready-to-use admin panel.

Dashboard

This part is a summary of your application.

Work in progress.

Data Explorer

The Data Explorer allows you to easily manage your data. +The UI is auto-generated depending on the models of your application. +So, in just a few seconds, you are able to create, search, view, edit and +delete your data.

To try it, simply create a new API using the Studio or the CLI. +Then restart the server and reload the web browser page.

Strapi Admin panel Screenshot Data Explorer

Users

List of Users

List, edit and delete the users information of your application.

Roles

Each user can be related to one or many roles.

The first registered user is automatically related to the admin role.

Permissions

Strapi contains a security system based on the routes of your application. +The admin panel allows you to visualize the different routes of your server and +to manage the security of each of them.

  • Public: no level of security (anyone can use the route).
  • Registered: the user has to be logged to use the route.
  • Owner: the user must be one of the contributors of the model updated or deleted.
  • Admin: only the users related to the admin role are allowed to access the route.

Strapi Admin panel Screenshot Permissions

Customization

The admin panel is developed with Angular.js, using the John PAPA styleguide. +You can customize the admin from ./api/admin/public in your generated application.

To build the admin panel:

  • You need to install bower and gulp with $ npm install gulp bower -g.
  • Run $ npm install in this directory.
  • Run $ gulp serve.
  • Visit http://localhost:3002 from your web browser.
  • When you are ready to use your customized admin panel, run $ gulp dist. +That will update the files in the following folder: ./api/admin/public/dist.
  • Visit http://localhost:1337/admin/.

If you change the default port (1337) of your server, you will have to update +./api/admin/public/config/config.json and then run $ npm install && gulp dist +in ./api/admin/public.

NOTE: You can create your own admin generator using the .strapirc file. +Learn more how to use custom generators.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/blueprints.html b/docs/.vuepress/dist/1.x.x/blueprints.html new file mode 100644 index 0000000000..59ec66c4f3 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/blueprints.html @@ -0,0 +1,189 @@ + + + + + + Blueprints | Strapi Docs + + + + + + + +

Blueprints

The blueprints are a set of useful actions containing all the logic you need to +create a clean RESTful API. The generated controllers and routes are automatically +plugged to the blueprint actions. Thanks to that, as soon as you generate a new API +from the CLI, you can enjoy a RESTful API without writing any line of code.

For example, if you generate a pet API, you will be able to immediately visit +POST /pet?name=joe to create a pet, and visit GET /pet to see an array +of your application's pets.

Blueprints are great for prototyping, but they are also a powerful tool in production +due to their ability to be overridden, protected, extended or disabled entirely.

All of the following actions return a promise.

find records

Returns a list of records from the model as a JSON array of objects.

Route:

{
+  "routes": {
+    "GET /pet": {
+      "controller": "Pet",
+      "action": "find"
+    }
+  }
+}
+

Controller function:

find: function * () {
+  this.model = 'Pet';
+
+  try {
+    this.body = yield strapi.hooks.blueprints.find(this);
+  } catch (error) {
+    this.body = error;
+  }
+}
+

Results may be filtered, paginated, and sorted based on the blueprint configuration +and/or parameters sent in the request.

Optional parameters:

  • * (string): To filter results based on a particular attribute, specify a query +parameter with the same name as the attribute defined on your model.
  • where (string): Instead of filtering based on a specific attribute, you may instead +choose to provide a where parameter with a Waterline WHERE criteria object, +encoded as a JSON string. This allows you to take advantage of contains, startsWith, +and other sub-attribute criteria modifiers for more powerful find() queries.
  • limit (number): The maximum number of records to send back (useful for pagination). +Defaults to 30.
  • skip (number): The number of records to skip (useful for pagination).
  • sort (string): The sort order. By default, returned records are sorted by primary key value +in ascending order. ASC or DESC.
  • populate (string): If specified, override the default automatic population process. +Accepts a comma separated list of attributes names for which to populate record values.

findOne record

Returns a single record from the model as a JSON object.

Route:

{
+  "routes": {
+    "GET /pet/:id": {
+      "controller": "Pet",
+      "action": "findOne"
+    }
+  }
+}
+

Controller function:

findOne: function * () {
+  this.model = 'Pet';
+
+  try {
+    this.body = yield strapi.hooks.blueprints.findOne(this);
+  } catch (error) {
+    this.body = error;
+  }
+}
+

The findOne() blueprint action returns a single record from the model as a JSON object. +The specified id is the primary key of the desired record.

Required parameters:

  • id (string or number): The desired record's primary key value.

create a record

Creates a new model instance in your database then returns its values.

Route:

{
+  "routes": {
+    "POST /pet/:id": {
+      "controller": "Pet",
+      "action": "create"
+    }
+  }
+}
+

Controller function:

create: function * () {
+  this.model = 'Pet';
+
+  try {
+    this.body = yield strapi.hooks.blueprints.create(this);
+  } catch (error) {
+    this.body = error;
+  }
+}
+

Attributes can be sent in the HTTP body as form-encoded values or JSON.

The promise returned contains a JSON object representing the newly created instance. +If a validation error occurred, a JSON response with the invalid attributes and +the Context status is set to 400.

Optional parameters:

  • * (string, number, object or array): Pass in body parameter with the same +name as the attribute defined in your model to set those values on your new record. +Nested objects and arrays passed in as parameters are handled the same +way as if they were passed into the model's .create() method.

update a record

Updates an existing record. Attributes to change should be sent in the HTTP body +as form-encoded values or JSON.

Route:

{
+  "routes": {
+    "PUT /pet/:id": {
+      "controller": "Pet",
+      "action": "update"
+    }
+  }
+}
+

Controller function:

update: function * () {
+  this.model = 'Pet';
+
+  try {
+    this.body = yield strapi.hooks.blueprints.update(this);
+  } catch (error) {
+    this.body = error;
+  }
+}
+

Updates the model instance which matches the id parameter. +The promise resolved contains a JSON object representing the newly updated instance. +If a validation error occurred, a JSON response with the invalid attributes and a +400 status code will be returned instead. If no model instance exists matching the +specified id, a 404 is returned.

Required parameters:

  • id (string or number): The desired record's primary key value.

Optional parameters:

  • * (string, number, object or array): Pass in body parameter with the same +name as the attribute defined on your model to set those values on your new record. +Nested objects and arrays passed in as parameters are handled the same +way as if they were passed into the model's .update() method.

destroy a record

Deletes an existing record specified by id from the database forever and returns +the values of the deleted record.

Route:

{
+  "routes": {
+    "DELETE /pet/:id": {
+      "controller": "Pet",
+      "action": "destroy"
+    }
+  }
+}
+

Controller function:

destroy: function * () {
+  this.model = 'Pet';
+
+  try {
+    this.body = yield strapi.hooks.blueprints.destroy(this);
+  } catch (error) {
+    this.body = error;
+  }
+}
+

Destroys the model instance which matches the id parameter. +Responds with a JSON object representing the newly destroyed instance. +If no model instance exists matching the specified id, the Context status is set to 400 and the returned promise is rejected.

Required parameters:

  • id (string or number): The desired record's primary key value.

add to a record

Adds an association between two records.

Route:

{
+  "routes": {
+    "POST /pet/:id/:parentId/:relation": {
+      "controller": "Pet",
+      "action": "add"
+    }
+  }
+}
+

Controller function:

add: function * () {
+  this.model = 'Pet';
+
+  try {
+    this.body = yield strapi.hooks.blueprints.add(this);
+  } catch (error) {
+    this.body = error;
+  }
+}
+

This action pushes a reference to some other record (the "foreign" record) onto a +collection attribute of this record (the "primary" record).

  • If :relation of an existing record is supplied, it will be associated with +the primary record.
  • If no :relation is supplied, and the body of the POST contains values for a +new record, that record will be created and associated with the primary record.
  • If the collection within the primary record already contains a reference to the +foreign record, this action will be ignored.
  • If the association is two-way (i.e. reflexive, with via on both sides) the association +on the foreign record will also be updated.

Notes:

  • This action is for dealing with plural ("collection") associations. +If you want to set or unset a singular ("model") association, just use +the update blueprint.

remove from a record

Removes an association between two records.

Route:

{
+  "routes": {
+    "DELETE /pet/:id/:parentId/:relation/:id": {
+      "controller": "Pet",
+      "action": "remove"
+    }
+  }
+}
+

Controller function:

remove: function * () {
+  this.model = 'Pet';
+
+  try {
+    this.body = yield strapi.hooks.blueprints.remove(this);
+  } catch (error) {
+    this.body = error;
+  }
+}
+

This action removes a reference to some other record (the "foreign" record) +from a collection attribute of this record (the "primary" record).

  • If the foreign record does not exist, it is created first.
  • If the collection doesn't contain a reference to the foreign record, +this action will be ignored.
  • If the association is two-way (i.e. reflexive, with via on both sides) +the association on the foreign record will also be updated.
+ + + diff --git a/docs/.vuepress/dist/1.x.x/cli.html b/docs/.vuepress/dist/1.x.x/cli.html new file mode 100644 index 0000000000..6e35060641 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/cli.html @@ -0,0 +1,49 @@ + + + + + + CLI | Strapi Docs + + + + + + + +

CLI

Strapi comes with a convenient command-line tool to quickly get your application scaffolded and running.

Login

$ strapi login
+

Ask your Strapi Studio credentials to link your new applications on your machine to +the Strapi Studio aiming to have a perfect workflow while you build APIs.

Go to the Strapi Studio to start the experience.

Create a new project

$ strapi new <appName>
+

Create a new Strapi project in a directory called appName.

$ strapi new is really just a special generator which runs strapi-generate-new. +In other words, running $ strapi new <appName> is an alias for running +$ strapi generate new <appName>, and like any Strapi generator, the actual generator module +which gets run can be overridden.

Start the server

$ cd <appName>
+$ strapi start
+

Run the Strapi application in the current directory. +If ./node_modules/strapi exists, it will be used instead of the globally installed module Strapi.

Access the console

$ cd <appName>
+$ strapi console
+

Start your Strapi application, and enter the Node.js REPL. This means you can access +and use all of your models, services, configuration, and much more. Useful for trying out +Waterline queries, quickly managing your data, and checking out your project's runtime configuration.

Note that this command still starts the server, so your routes will be accessible via HTTP and sockets.

Strapi exposes the same global variables in the console as it does in your application code. +This is particularly useful in the REPL. By default, you have access to the Strapi application +instance, your models as well as Lodash (_) and Socket.IO (io).

Generate an API

$ strapi generate api <apiName>
+

Generate a complete API with controllers, models and routes.

$ strapi version
+

Output the current globally installed Strapi version.

$ strapi link
+

Link an existing application without an appId to the Strapi Studio.

This command can be useful if you were not logged into the Studio or if you +didn't have Internet access when you generated your application.

Logout

$ strapi logout
+

If you don't want to be logged in to the Strapi Studio anymore.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/configuration.html b/docs/.vuepress/dist/1.x.x/configuration.html new file mode 100644 index 0000000000..9b4b6f874d --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/configuration.html @@ -0,0 +1,313 @@ + + + + + + Configuration | Strapi Docs + + + + + + + +

Configuration

While Strapi dutifully adheres to the philosophy of convention-over-configuration, +it is important to understand how to customize those handy defaults from time to time. +For almost every convention in Strapi, there is an accompanying set of configuration +options that allow you to adjust or override things to fit your needs.

Settings specified at the root directory will be available in all environments.

If you'd like to have some settings take effect only in certain environments, +you can use the special environment-specific files and folders. +Any files saved under the ./config/environments/development directory will be +loaded only when Strapi is started in the development environment.

The built-in meaning of the settings in strapi.config are, in some cases, +only interpreted by Strapi during the start process. In other words, changing some +options at runtime will have no effect. To change the port your application is running on, +for instance, you can't just change strapi.config.port. You'll need to change or +override the setting in a configuration file or as a command-line argument, +then restart the server.

Application package

strapi.config merge user config from the ./config directory with the package.json +of the application.

The most important things in your package.json are the name and version fields. +Those are actually required, and your package won't install without them. +The name and version together form an identifier that is assumed to be completely unique.

Application name

The name of the application.

  • Key: name
  • Environment: all
  • Location: ./package.json
  • Type: string

Notes:

  • The name must be shorter than 214 characters. This includes the scope for scoped packages.
  • The name can't start with a dot or an underscore.
  • New packages must not have uppercase letters in the name.
  • The name ends up being part of a URL, an argument on the command line, and a folder name. +Therefore, the name can't contain any non-URL-safe characters.
  • Don't use the same name as a core Node.js module.
  • Don't put "js" or "node" in the name. It's assumed that it's JavaScript, since you're writing +a package.json file.
  • The name will probably be passed as an argument to require(), so it should be something short, +but also reasonably descriptive. You may want to check the npm registry to see if there's something +by that name already, before you get too attached to it. https://www.npmjs.com/
  • A name can be optionally prefixed by a scope, e.g. @myorg/mypackage.

Application version

Changes to the package should come along with changes to the version.

  • Key: version
  • Environment: all
  • Location: ./package.json
  • Type: string

Notes:

  • Version must be parseable by node-semver, which is bundled with npm as a dependency.

Application description

The description of your application helps people discover your package, as it's listed in npm search.

  • Key: description
  • Environment: all
  • Location: ./package.json
  • Type: string

Global settings

Public assets

Public assets refer to static files on your server that you want to make accessible to the +outside world. In Strapi, these files are placed in the ./public directory.

Strapi is compatible with any front-end strategy; whether it's Angular, Backbone, Ember, +iOS, Android, Windows Phone, or something else that hasn't been invented yet.

  • Key: static

  • Environment: all

  • Location: ./config/general.json

  • Type: boolean

  • Defaults to:

    {
    +  "static": true
    +}
    +

Notes:

  • Set to false to disable the public assets.

Views

  • Key: views

  • Environment: all

  • Location: ./config/general.json

  • Type: object

  • Defaults to:

    {
    +  "views": false
    +}
    +

For more information, please refer to the views documentation.

Options:

  • map: Object mapping extension names to engine names.
  • default: Default extension name to use when missing.
  • cache: When true compiled template functions will be cached in-memory, +this prevents subsequent disk I/O, as well as the additional compilation step +that most template engines peform. By default this is enabled when the NODE_ENV +environment variable is anything but development, such as stage or production.

Notes:

  • Set to false to disable views support.

WebSockets

Socket.IO enables real-time bidirectional event-based communication. +It works on every platform, browser or device, focusing equally on reliability +and speed.

By default Strapi binds Socket.IO and your common websockets features are +available using the io object.

  • Key: websockets

  • Environment: all

  • Location: ./config/general.json

  • Type: boolean

  • Defaults to:

    {
    +  "websockets": true
    +}
    +

Notes:

  • Set to false to disable websockets with Socket.IO.

Favicon

Set a favicon for your web application.

  • Key: favicon

  • Environment: all

  • Location: ./config/general.json

  • Type: object

  • Defaults to:

    {
    +  "favicon": {
    +    "path": "favicon.ico",
    +    "maxAge": 86400000
    +  }
    +}
    +

Options:

  • path (string): Relative path for the favicon to use from the application root directory.
  • maxAge (integer): Cache-control max-age directive. Set to pass the cache-control in ms.

Notes:

  • Set to false to disable the favicon feature.

API prefix

Prefix your API aiming to not have any conflicts with your front-end if you have one of if need to +for some other reasons.

  • Key: prefix

  • Environment: all

  • Location: ./config/general.json

  • Type: string

  • Defaults to:

    {
    +  "prefix": ""
    +}
    +

Notes:

  • Let an empty string if you don't want to prefix your API.
  • The prefix must starts with a /, e.g. /api.

Blueprints

The blueprints are a set of useful actions containing all the logic you need to +create a clean RESTful API. The generated controllers and routes are automatically +plugged to the blueprint actions. Thanks to that, as soon as you generate a new API +from the CLI, you can enjoy a RESTful API without writing any line of code.

  • Key: blueprints

  • Environment: all

  • Location: ./config/general.json

  • Type: object

  • Defaults to:

    {
    +  "blueprints": {
    +    "defaultLimit": 30,
    +    "populate": true
    +  }
    +}
    +

Options:

  • defaultLimit (integer): The maximum number of records to send back.
  • populate (boolean): If enabled, the population process fills out attributes +in the returned list of records according to the model's defined associations.

i18n

If your application will touch people or systems from all over the world, internationalization +and localization (i18n) may be an important part of your international strategy.

Strapi provides built-in support for detecting user language preferences and translating +static words/sentences.

  • Key: i18n

  • Environment: all

  • Location: ./config/i18n.json

  • Type: object

  • Defaults to:

    {
    +  "i18n": {
    +    "defaultLocale": "en",
    +    "modes": [
    +      "query",
    +      "subdomain",
    +      "cookie",
    +      "header",
    +      "url",
    +      "tld"
    +    ],
    +    "cookieName": "locale"
    +  }
    +}
    +

Options:

  • defaultLocale (string): The default locale to use.
  • modes (array): Accept locale variable from: +
    • query: detect query string with /?locale=fr
    • subdomain: detect subdomain with fr.myapp.com
    • cookie: detect cookie with Accept-Language: en,fr;q=0.5
    • header: detect header with Cookie: locale=fr
    • url: detect url with /fr
    • tld: detect TLD with myapp.fr
  • cookieName (string): i18n cookies property, tries to find a cookie named locale here. +Allows the locale to be set from query string or from cookie.

Notes:

  • Set to false to disable the locales feature.
  • Locales may be configured in the ./config/locales directory.

Global variables

For convenience, Strapi exposes a handful of global variables. By default, your application's +models, the global strapi object and the Lodash node module are all available on the global +scope; meaning you can refer to them by name anywhere in your backend code +(as long as Strapi has been loaded).

Nothing in Strapi core relies on these global variables. Each and every global exposed in +Strapi may be disabled in strapi.config.globals.

Bear in mind that none of the globals, including strapi, are accessible until after +Strapi has loaded. In other words, you won't be able to use strapi.models.car or Car +outside of a function (since Strapi will not have finished loading yet).

  • Key: globals

  • Environment: all

  • Location: ./config/globals.json

  • Type: object

  • Defaults to:

    {
    +  "globals": {
    +    "models": true,
    +    "strapi": true,
    +    "async": true,
    +    "_": true,
    +    "graphql": true
    +  }
    +}
    +

Options:

  • models (boolean): Your application's models are exposed as global variables using their globalId. +For instance, the model defined in the file ./api/car/models/Car.js will be globally accessible as Car.
  • strapi (boolean): In most cases, you will want to keep the strapi object globally accessible, +it makes your application code much cleaner.
  • async (boolean): Exposes an instance of Async.
  • _ (boolean): Exposes an instance of Lodash.
  • graphql (boolean): Exposes an instance of GraphQL.

Notes:

  • Set to false to disable global variables.

Bootstrap function

The bootstrap function is a server-side JavaScript file that is executed by Strapi +just before your application is started.

This gives you an opportunity to set up your data model, run jobs, or perform some special logic.

  • Key: bootstrap
  • Environment: all
  • Location: ./config/functions/bootstrap.js
  • Type: function

Notes:

  • It's very important to trigger the callback method when you are finished with the bootstrap. +Otherwise your server will never start, since it's waiting on the bootstrap.

CRON tasks

CRON tasks allow you to schedule jobs (arbitrary functions) for execution at specific dates, +with optional recurrence rules. It only uses a single timer at any given time +(rather than reevaluating upcoming jobs every second/minute).

  • Key: cron

  • Environment: all

  • Location: ./config/functions/cron.js

  • Type: object

      module.exports.cron = {
    +
    +    /**
    +     * Every day at midnight.
    +     */
    +
    +    '0 0 * * *': function () {
    +      // Your code here
    +    }
    +  };
    +}
    +

Notes:

  • The cron format consists of: +
    1. second (0 - 59, optional)
    2. minute (0 - 59)
    3. hour (0 - 23)
    4. day of month (1 - 31)
    5. month (1 - 12)
    6. day of week (0 - 7)

Studio connection

The Strapi Studio is a toolbox for developers that allows you to build and manage +your APIs in realtime without writing any line of code. When your application is +linked to the Studio, you are able to generate APIs from the Studio and see +the changes in realtime in your local application.

  • Key: studio

  • Environment: all

  • Location: ./config/studio.json

  • Type: object

  • Defaults to:

    {
    +  "studio": {
    +    "enabled": true,
    +    "secretKey": "YOUR SECRET KEY HERE"
    +  }
    +}
    +

Options:

  • enabled (boolean): Do you want your application linked to the Strapi Studio?
  • secretKey (string): The secret key of your application to link your +current application with the Strapi Studio.

General environment settings

Host

The host name the connection was configured to.

  • Key: host

  • Environment: development

  • Location: ./config/environments/development/server.json

  • Type: string

  • Defaults to:

    {
    +  "host": "localhost"
    +}
    +

Notes:

  • You don't need to specify a host in a production environment.
  • Defaults to the operating system hostname when available, otherwise localhost.

Port

The actual port assigned after the server has been started.

  • Key: port

  • Environment: development

  • Location: ./config/environments/development/server.json

  • Type: integer

  • Defaults to:

    {
    +  "port": 1337
    +}
    +

Notes:

  • You don't need to specify a host in a production environment.
  • When no port is configured or set, Strapi will look for the process.env.PORT +value. If no port specified, the port will be 1337.

Front-end URL

This is the URL of your front-end application.

This config key is useful when you don't use the ./public directory for your +assets or when you run your automation tools such as Gulp or Grunt on an other port.

This address can be resourceful when you need to redirect the user after he +logged in with an authentication provider.

  • Key: frontendUrl

  • Environment: development

  • Location: ./config/environments/development/server.json

  • Type: string

  • Defaults to:

    {
    +  "frontendUrl": ""
    +}
    +

Reload

Enable or disable auto-reload when your application crashes.

  • Key: reload

  • Environment: development

  • Location: ./config/environments/development/server.json

  • Type: object

  • Defaults to:

    {
    +  "reload": {
    +    "timeout": 1000,
    +    "workers": 1
    +  }
    +}
    +

Options:

  • timeout (integer): Set the timeout before killing a worker in ms.
  • workers (integer): Set the number of workers to spawn. +If the workers key is not defined, Strapi will use every free CPU +(recommended in production environement).

Notes:

  • Set to false to disable the auto-reload and clustering features.

Request

Logger

Enable or disable request logs.

  • Key: logger

  • Environment: development

  • Location: ./config/environments/development/server.json

  • Type: boolean

  • Defaults to:

    {
    +  "logger": true
    +}
    +

Notes:

  • Set to false to disable the logger.

Body parser

Parse request bodies.

  • Key: parser

  • Environment: development

  • Location: ./config/environments/development/server.json

  • Type: object

  • Defaults to:

    {
    +  "parser": {
    +    "encode": "utf-8",
    +    "formLimit": "56kb",
    +    "jsonLimit": "1mb",
    +    "strict": true,
    +    "extendTypes": {
    +      "json": [
    +        "application/x-javascript"
    +      ]
    +    }
    +  }
    +}
    +

Options:

  • encode (string): Requested encoding.
  • formLimit (string): Limit of the urlencoded body. +If the body ends up being larger than this limit, a 413 error code is returned.
  • jsonLimit (string): Limit of the JSON body.
  • strict (boolean): When set to true, JSON parser will only accept arrays and objects.
  • extendTypes (array): Support extend types.

Notes:

  • Set to false to disable the body parser.

Response

Gzip

Enable or disable Gzip compression.

  • Key: gzip

  • Environment: development

  • Location: ./config/environments/development/server.json

  • Type: boolean

  • Defaults to:

    {
    +  "gzip": true
    +}
    +

Notes:

  • Set to false to disable Gzip.

Response time header

The X-Response-Time header records the response time for requests in HTTP servers. +The response time is defined here as the elapsed time from when a request enters the application +to when the headers are written out to the client.

  • Key: responseTime

  • Environment: development

  • Location: ./config/environments/development/reponse.json

  • Type: boolean

  • Defaults to:

    {
    +  "responseTime": true
    +}
    +

Notes:

  • Set to false to disable the response time header.

Databases

Strapi comes installed with a powerful ORM/ODM called Waterline, a datastore-agnostic tool that +dramatically simplifies interaction with one or more databases.

It provides an abstraction layer on top of the underlying database, allowing you to easily query +and manipulate your data without writing vendor-specific integration code.

  • Key: orm

  • Environment: development

  • Location: ./config/environments/development/databases.json

  • Type: object

  • Defaults to:

    {
    +  "orm": {
    +    "adapters": {
    +      "disk": "sails-disk"
    +    },
    +    "defaultConnection": "default",
    +    "connections": {
    +      "default": {
    +        "adapter": "disk",
    +        "filePath": ".tmp/",
    +        "fileName": "default.db",
    +        "migrate": "alter"
    +      },
    +      "permanent": {
    +        "adapter": "disk",
    +        "filePath": "./data/",
    +        "fileName": "permanent.db",
    +        "migrate": "alter"
    +      }
    +    }
    +  }
    +}
    +

Options:

  • adapters (object): Association between a connection and the adapter to use.
  • defaultConnection (string): The default connection will be used if the +connection key of a model is empty or missing.
  • connections (object): Options of the connection. +Every adapter has its own options such as host, port, database, etc. +The migrate option controls how Strapi will attempt to automatically +rebuild the tables/collections/sets/etc. in your schema. +
    • safe: never auto-migrate database(s).
    • alter: auto-migrate database(s), but attempt to keep existing data.
    • drop: drop all data and rebuild models every time your application starts.

Notes:

  • When your Strapi application starts, the Waterline ORM validates all of the data in your database. +This migrate flag tells waterline what to do with data when the data is corrupt. +You can set this flag to safe which will ignore the corrupt data and continue to start.
  • By using drop, or even alter, you risk losing your data. Be careful. +Never use drop or alter with a production dataset. +Additionally, on large databases alter may take a long time to complete at startup. +This may cause the start process to appear to hang.

Security

Sessions

Since HTTP driven applications are stateless, sessions provide a way to store information +about the user across requests.

Strapi provides "guest" sessions, meaning any visitor will have a session, +authenticated or not. If a session is new a Set-Cookie will be produced regardless +of populating the session.

Strapi only supports cookie sessions, for now.

  • Key: session

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: object

  • Defaults to:

    {
    +  "session": {
    +    "key": "myApp",
    +    "secretKeys": [
    +      "mySecretKey1"
    +    ],
    +    "maxAge": 86400000
    +  }
    +}
    +

Options:

  • key (string): The cookie name.
  • secretKeys (array): Keys used to encrypt the session cookie.
  • maxAge (integer): Sets the time in seconds for when a cookie will be deleted.

Notes:

  • Set to false to disable sessions.

Cross Site Request Forgery (CSRF) headers

CSRF is a type of attack which forces an end user to execute unwanted actions on a web +application backend with which he/she is currently authenticated.

Strapi bundles optional CSRF protection out of the box.

  • Key: csrf

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: object

  • Defaults to:

    {
    +  "csrf": false
    +}
    +

Options:

  • key (string): The name of the CSRF token added to the model. +Defaults to _csrf.
  • secret (string): The key to place on the session object which maps to the server side token. +Defaults to _csrfSecret.

Notes:

  • Set to false to disable CSRF headers.
  • If you have existing code that communicates with your Strapi backend via POST, PUT, or DELETE +requests, you'll need to acquire a CSRF token and include it as a parameter or header in those requests.

Content Security Policy (CSP) headers

Content Security Policy (CSP) is a W3C specification for instructing the client browser as to +which location and/or which type of resources are allowed to be loaded.

This spec uses "directives" to define a loading behaviors for target resource types. +Directives can be specified using HTTP response headers or or HTML Meta tags.

  • Key: csp

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: object

  • Defaults to:

    {
    +  "csp": false
    +}
    +

Options:

  • policy (object): Object definition of policy.
  • reportOnly (boolean): Enable report only mode.
  • reportUri (string): URI where to send the report data.

Notes:

  • Set to false to disable CSP headers.

X-Frame-Options headers

Enables X-Frame-Options headers to help prevent Clickjacking.

  • Key: xframe

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: string

  • Defaults to:

    {
    +  "xframe": "SAMEORIGIN"
    +}
    +

Notes:

  • The string is the value for the header: DENY, SAMEORIGIN or ALLOW-FROM.
  • Set to false to disable X-Frame-Options headers.

Platform for Privacy Preferences

Platform for Privacy Preferences (P3P) is a browser/web standard designed to facilitate +better consumer web privacy control. Currently out of all the major browsers, it is only +supported by Internet Explorer. It comes into play most often when dealing with legacy applications.

  • Key: p3p

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: string

  • Defaults to:

    {
    +  "p3p": false
    +}
    +

Notes:

  • The string is the value of the compact privacy policy.
  • Set to false to disable P3P.

HTTP Strict Transport Security

Enables HTTP Strict Transport Security for the host domain.

The preload flag is required for HSTS domain submissions to Chrome's HSTS preload list.

  • Key: hsts

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: object

  • Defaults to:

    {
    +  "hsts": {
    +    "maxAge": 31536000,
    +    "includeSubDomains": true
    +  }
    +}
    +

Options:

  • maxAge (integer): Number of seconds HSTS is in effect.
  • includeSubDomains (boolean): Applies HSTS to all subdomains of the host.

Notes:

  • Set to false to disable HSTS.

X-XSS-Protection headers

Cross-site scripting (XSS) is a type of attack in which a malicious agent manages to inject +client-side JavaScript into your website, so that it runs in the trusted environment of your users' browsers.

Enables X-XSS-Protection headers to help prevent cross site scripting (XSS) attacks in older IE browsers (IE8).

  • Key: xssProtection

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: object

  • Defaults to:

    {
    +  "xssProtection": false
    +}
    +

Options:

  • enabled (boolean): If the header is enabled or not.
  • mode (string): Mode to set on the header.

Notes:

  • Set to false to disable HTTP Strict Transport Security.

Cross-Origin Resource Sharing (CORS)

Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources +(e.g. fonts, JavaScript, etc.) on a web page to be requested from another domain outside +the domain from which the resource originated.

  • Key: cors

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: object

  • Defaults to:

    {
    +  "cors": {
    +    "origin": true,
    +    "expose": [
    +      "WWW-Authenticate",
    +      "Server-Authorization"
    +    ],
    +    "maxAge": 31536000,
    +    "credentials": true,
    +    "methods": [
    +      "GET",
    +      "POST",
    +      "PUT",
    +      "DELETE",
    +      "OPTIONS",
    +      "HEAD"
    +    ],
    +    "headers": [
    +      "Content-Type",
    +      "Authorization"
    +    ]
    +  }
    +}
    +

Options:

  • origin (string|boolean): Configures the Access-Control-Allow-Origin CORS header. +Expects a string (ex: http://example.com) or a boolean. +Set to true to reflect the request origin, as defined by req.header('Origin'). +Set to false to disable CORS.
  • expose (array): Configures the Access-Control-Expose-Headers CORS header. +Set this to pass the header, otherwise it is omitted.
  • maxAge (integer): Configures the Access-Control-Max-Age CORS header. +Set to an integer to pass the header, otherwise it is omitted.
  • credentials (boolean): Configures the Access-Control-Allow-Credentials CORS header. +Set to true to pass the header, otherwise it is omitted.
  • methods (array): Configures the Access-Control-Allow-Methods CORS header.
  • headers (array): Configures the Access-Control-Allow-Headers CORS header. +If not specified, defaults to reflecting the headers specified in the request's +Access-Control-Request-Headers header.

Notes:

  • Set to false to disable CORS.

Secure Sockets Layer (SSL)

Secure Sockets Layer (SSL), is a cryptographic protocol designed to provide communications security +over a computer network.

This configuration enforce SSL for your application.

  • Key: ssl

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: object

  • Defaults to:

    {
    +  "ssl": false
    +}
    +

Options:

  • disabled (boolean): If true, this middleware will allow all requests through.
  • trustProxy (boolean): If true, trust the X-Forwarded-Proto header.

Notes:

  • Set to false to disable SSL.

IP filter

The IP filter configuration allows you to whitelist or blacklist specific or range IP addresses.

The blacklisted IP addresses won't have access to your web application at all.

  • Key: ip

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: object

  • Defaults to:

    {
    +  "ip": {
    +    "whiteList": [],
    +    "blackList": []
    +  }
    +}
    +

Options:

  • whiteList (array): IP addresses allowed.
  • blackList (array): IP addresses forbidden.

Notes:

  • Set to false to disable IP filter.

Proxy

A proxy server is a server that acts as an intermediary for requests from clients +seeking resources from other servers.

Request your server, fetch the proxy URL you typed and return.

  • Key: proxy

  • Environment: development

  • Location: ./config/environments/development/security.json

  • Type: string

  • Defaults to:

    {
    +  "proxy": false
    +}
    +

Notes:

  • The string will fetch the host and return.
  • Set to false to disable the proxy security.
+ + + diff --git a/docs/.vuepress/dist/1.x.x/context.html b/docs/.vuepress/dist/1.x.x/context.html new file mode 100644 index 0000000000..47278b7de2 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/context.html @@ -0,0 +1,67 @@ + + + + + + Context | Strapi Docs + + + + + + + +

Context

A Strapi Context encapsulates Node's request and response objects +into a single object which provides many helpful methods for writing +web applications and APIs.

These operations are used so frequently in HTTP server development +that they are added at this level instead of a higher level framework, +which would force middleware to re-implement this common functionality.

A Context is created per request, and is referenced in middleware +as the receiver, or the this identifier, as shown in the following +snippet:

strapi.app.use(function * () {
+  this; // is the Context
+  this.request; // is a Strapi Request
+  this.response; // is a Strapi Response
+});
+

Many of the context's accessors and methods simply delegate to their ctx.request or ctx.response +equivalents for convenience, and are otherwise identical. For example ctx.type and ctx.length +delegate to the response object, and ctx.path and ctx.method delegate to the request.

API

Context specific methods and accessors.

ctx.req

Node's request object.

ctx.res

Node's response object.

Bypassing Strapi's response handling is not supported. Avoid using the following Node properties:

  • res.statusCode
  • res.writeHead()
  • res.write()
  • res.end()

ctx.request

A Strapi Request object.

ctx.response

A Strapi Response object.

ctx.state

The recommended namespace for passing information through middleware and to your front-end views.

this.state.user = yield User.find(id);
+

ctx.app

Application instance reference.

ctx.cookies.get(name, [options])

Get cookie name with options:

  • signed the cookie requested should be signed

Strapi uses the cookies module where options are simply passed.

ctx.cookies.set(name, value, [options])

Set cookie name to value with options:

  • signed sign the cookie value
  • expires a Date for cookie expiration
  • path cookie path, /' by default
  • domain cookie domain
  • secure secure cookie
  • httpOnly server-accessible cookie, true by default

Strapi uses the cookies module where options are simply passed.

ctx.throw([msg], [status], [properties])

Helper method to throw an error with a .status property +defaulting to 500 that will allow Strapi to respond appropriately. +The following combinations are allowed:

this.throw(403);
+this.throw('name required', 400);
+this.throw(400, 'name required');
+this.throw('something exploded');
+

For example this.throw('name required', 400) is equivalent to:

const err = new Error('name required');
+err.status = 400;
+throw err;
+

Note that these are user-level errors and are flagged with +err.expose meaning the messages are appropriate for +client responses, which is typically not the case for +error messages since you do not want to leak failure +details.

You may optionally pass a properties object which is merged into the error as-is, +useful for decorating machine-friendly errors which are reported to the requester upstream.

this.throw(401, 'access_denied', { user: user });
+this.throw('access_denied', { user: user });
+

Strapi uses http-errors to create errors.

ctx.assert(value, [msg], [status], [properties])

Helper method to throw an error similar to .throw() +when !value. Similar to Node's assert() +method.

this.assert(this.state.user, 401, 'User not found. Please login!');
+

Strapi uses http-assert for assertions.

ctx.respond

To bypass Strapi's built-in response handling, you may explicitly set this.respond = false;. +Use this if you want to write to the raw res object instead of letting Strapi handle +the response for you.

Note that using this is not supported by Strapi. This may break intended functionality +of Strapi middleware and Strapi itself. Using this property is considered a hack and is +only a convenience to those wishing to use traditional fn(req, res) functions and middleware +within Strapi.

Request aliases

The following accessors and alias Request equivalents:

  • ctx.header
  • ctx.headers
  • ctx.method
  • ctx.method=
  • ctx.url
  • ctx.url=
  • ctx.originalUrl
  • ctx.origin
  • ctx.href
  • ctx.path
  • ctx.path=
  • ctx.query
  • ctx.query=
  • ctx.querystring
  • ctx.querystring=
  • ctx.host
  • ctx.hostname
  • ctx.fresh
  • ctx.stale
  • ctx.socket
  • ctx.protocol
  • ctx.secure
  • ctx.ip
  • ctx.ips
  • ctx.subdomains
  • ctx.is()
  • ctx.accepts()
  • ctx.acceptsEncodings()
  • ctx.acceptsCharsets()
  • ctx.acceptsLanguages()
  • ctx.get()

Response aliases

The following accessors and alias Response equivalents:

  • ctx.body
  • ctx.body=
  • ctx.status
  • ctx.status=
  • ctx.message
  • ctx.message=
  • ctx.length=
  • ctx.length
  • ctx.type=
  • ctx.type
  • ctx.headerSent
  • ctx.redirect()
  • ctx.attachment()
  • ctx.set()
  • ctx.append()
  • ctx.remove()
  • ctx.lastModified=
  • ctx.etag=
+ + + diff --git a/docs/.vuepress/dist/1.x.x/customization.html b/docs/.vuepress/dist/1.x.x/customization.html new file mode 100644 index 0000000000..3af3965093 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/customization.html @@ -0,0 +1,53 @@ + + + + + + Customization | Strapi Docs + + + + + + + +

Customization

In keeping with the Node.js philosophy, Strapi aims to keep its core as small +as possible, delegating all but the most critical functions to separate modules.

Generators are designed to make it easier to customize the $ strapi new +and $ strapi generate command-line tools, and provide better support +for different user features, custom admin panel, configuration options, +view engines, etc.

Custom generators are linked to your machine aiming to have your personal +configuration and features at any time, for every application.

You can edit your custom generators inside the .strapirc file at $HOME.

First, make sure you this file exists:

$ strapi config
+

This file should look like this:

{
+  "generators": {
+
+  }
+}
+

At this time, you don't have any custom generators on your machine.

In your .strapirc file, a custom generator is an object with three keys:

  • repository: the Git repository to clone.
  • remote: the current remote to pull updates from.
  • branch: the branch you want to pull updates from.

For example, to add a custom blog generator, follow this:

{
+  "generators": {
+    "blog": {
+      "repository": "git@github.com:username/strapi-generate-blog.git",
+      "remote": "origin",
+      "branch": "master"
+    }
+  }
+}
+

Once you have updated your .strapirc file, you need to clone and/or update your +generators. To do so, just execute:

$ strapi update
+

This command will clone every new repository written in your configuration file +and pull the latest updates for the other ones.

Then, you can generate your blog files inside your project with:

$ strapi generate blog
+
+ + + diff --git a/docs/.vuepress/dist/1.x.x/email.html b/docs/.vuepress/dist/1.x.x/email.html new file mode 100644 index 0000000000..8123b992e3 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/email.html @@ -0,0 +1,85 @@ + + + + + + Email | Strapi Docs + + + + + + + +

Email

Strapi contains a set of tools to send emails. This part is based on the +famous email node module: Nodemailer.

Email config

To change the STMP config, edit the ./api/email/config/environments/development/smtp.json file.

{
+  "smtp": {
+    "from": "test<no-reply@test.com>",
+    "service": {
+      "name": "",
+      "user": "",
+      "pass": ""
+    }
+  }
+}
+

Options:

  • from (string): The email address used to send emails.
  • service (object): The SMTP service info: +
    • name (string): Name of the service used to send emails (eg. Gmail).
    • user (string): Username of the service used (eg. john@gmail.com).
    • pass (string): Password of the username used (eg. 12356).

Email service

The email service allows you to easily send emails from anywhere in your application.

Usage as a promise (yieldable) :

strapi.api.email.services.email.send({
+    from: 'contact@company.com', // Sender (defaults to `strapi.config.smtp.from`).
+    to: ['john@doe.com'], // Recipients list.
+    html: '<p>Hello John</p>', // HTML version of the email content.
+    text: 'Hello John' // Text version of the email content.
+  })
+  .then(function (data) {
+    console.log(data);
+  })
+  .catch(function (err) {
+    console.log(err);
+  });
+

Usage with a callback :

strapi.api.email.services.email.send({
+    from: 'contact@company.com', // Sender (defaults to `strapi.config.smtp.from`).
+    to: ['john@doe.com'], // Recipients list.
+    html: '<p>Hello John</p>', // HTML version of the email content.
+    text: 'Hello John' // Text version of the email content.
+  }, function (err, data) {
+    if (err) {
+      console.log(err);
+    } else {
+      console.log(data);
+    }
+  });
+

Email API

The email API is a simple API which can be used from your client (front-end, mobile...) application.

Route used to send emails:

POST /email
+

Request payload:

{
+  from: 'contact@company.com', // Optional : sender (defaults to `strapi.config.smtp.from`).
+  to: ['john@doe.com'], // Recipients list.
+  html: '<p>Hello John</p>', // HTML version of the email content.
+  text: 'Hello John' // Text version of the email content.
+}
+

Response payload:

{
+  "sent": true,
+  "from": "contact@company.com",
+  "to": "john@doe.com",
+  "html": "<p>Hello John</p>",
+  "text": "Hello John",
+  "template": "default",
+  "lang": "en",
+  "createdAt": "2015-10-21T09:10:36.486Z",
+  "updatedAt": "2015-10-21T09:10:36.871Z",
+  "id": 2
+}
+

Email model

Each sent email is registered in the database. So you can retrieve them whenever +you want. However, you can disable this option by overriding the email service logic.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/graphql.html b/docs/.vuepress/dist/1.x.x/graphql.html new file mode 100644 index 0000000000..f20993127e --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/graphql.html @@ -0,0 +1,79 @@ + + + + + + GraphQL | Strapi Docs + + + + + + + +

GraphQL

GraphQL is a data querying language that allows you to execute complex nested +requests between your clients and server applications.

Configuration

By default, GraphQL is enabled and the HTTP endpoint is /graphql. +You can override this settings in the ./config/general.json file.

{
+  "graphql": {
+    "enabled": true,
+    "route": "/graphql"
+  }
+}
+

Options:

  • enabled (boolean): Enabled or disabled GraphQL.
  • route (string): Change GraphQL endpoint.

Note: If GraphQL is disabled, the GraphQL global variable is not exposed.

Execute simple query

Programmatically

Strapi takes over GraphQL natively. We added a function called query to execute +your query without given as a parameters the GraphQL schemas each time.

An example of how to use query function:

// Build your query
+const query = '{ users{firstName lastName posts{title}} }';
+
+// Execute the query
+graphql.query(query)
+  .then(function (result) {
+    console.log(result);
+  })
+  .catch(function (error) {
+    console.log(error);
+  });
+

And the JSON result:

{
+  "users": [{
+    "firstname": "John",
+    "lastname": "Doe",
+    "posts":[{
+      "title": "First title..."
+    }, {
+      "title": "Second title..."
+    }, {
+      "title": "Third title..."
+    }]    
+  }, {
+    "firstname": "Karl",
+    "lastname": "Doe",
+    "posts":[{
+      "title": "Fourth title..."
+    }]    
+  }]
+}
+

With a HTTP request

Strapi also provides a HTTP GraphQL server to execute request from your front-end application.

An example of how to execute the same request as above with a HTTP request with jQuery.

$.get('http://yourserver.com/graphql?query={ users{firstName lastName posts{title}} }', function (data) {
+  console.log(data);
+});
+

Execute complex queries

Query parameters

If you're using Waterline ORM installed by default with Strapi, you have access to +some Waterline query parameters in your GraphQL query such as sort, limit or skip. +Strapi also provides the start and end parameters to select records between two dates.

This example will return 10 users' records sorted alphabetically by firstName:

const query = '{ users(limit: 10, sort: "firstName ASC"){firstName lastName post{title}} }';
+

You can access to the 10 next users by adding the skip parameter:

const query = '{ users(limit: 10, sort: "firstName ASC", skip: 10){firstName lastName posts{title}} }';
+

And you also can select those records in a period between two dates with the start and end parameters:

const query = '{ users(limit: 10, sort: "firstName ASC", skip: 10, start: "09/21/2015", end:" 09/22/2015"){firstName lastName posts{title}} }';
+

Useful functions

Strapi comes with a powerful set of useful functions such as getLatest<Model>, getFirst<Model> and count<Model>.

Returns the 5 latest users from the September 27th 2015 at 8:59:59 PM:

const query = '{ getLatestUsers(count: 5, start: "9/27/2015 20:59:59"){firstName lastName posts{title}} }';
+

Returns the 5 first users:

const query = '{ getFirstUsers(count: 5){firstName lastName posts{title}} }';
+

Returns the number of subscribers the September 28th 2015:

const query = '{ countUsers(start: "9/28/2015", end: "9/28/2015") }';
+
+ + + diff --git a/docs/.vuepress/dist/1.x.x/index.html b/docs/.vuepress/dist/1.x.x/index.html new file mode 100644 index 0000000000..655df6585d --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/index.html @@ -0,0 +1,45 @@ + + + + + + Strapi | Strapi Docs + + + + + + + +

Strapi

Build Status Slack Status

Strapi is an open-source Node.js rich framework for building applications and services.

Strapi enables developers to focus on writing reusable application logic instead of spending time +building infrastructure. It is designed for building practical, production-ready Node.js applications +in a matter of hours instead of weeks.

The framework sits on top of Koa. Its ensemble of small modules work +together to provide simplicity, maintainability, and structural conventions to Node.js applications.

DISCLAIMER: This version is maintained for criticals issues only.

Getting started in a minute

Installation

Install the latest stable release with the npm command-line tool:

$ npm install strapi -g
+

We advise you to use our Studio to build APIs. To do so, you need to create a Strapi account. +Go to the Strapi Studio to signup. +Studio is dedicated to developers to build applications without writing +any single line of code thanks to its powerful set of tools.

After creating an account on the Strapi Studio, you are able to link your machine to your +Strapi Studio account to get access to all features offered by the Strapi ecosystem. +Use your Strapi account credentials.

$ strapi login
+

Create your first project

You now are able to use the Strapi CLI. Simply create your first application and start the server:

$ strapi new <appName>
+

Note that you can generate a dry application using the dry option:

$ strapi new <appName> --dry
+

This will generate a Strapi application without:

  • the built-in user, email and upload APIs,
  • the grant hook,
  • the open-source admin panel,
  • the Waterline ORM (waterline and blueprints hooks disabled),
  • the Strapi Studio connection (studio hook disabled).

This feature allows you to only use Strapi for your HTTP server structure if you want to.

Start your application

$ cd <appName>
+$ strapi start
+

The default home page is accessible at http://localhost:1337/.

Create your first API

The Strapi ecosystem offers you two possibilities to create a complete RESTful API.

Via the CLI

$ strapi generate api <apiName>
+

For example, you can create a car API with a name (name), year (year) and +the license plate (license) with:

$ strapi generate api car name:string year:integer license:string
+

Via the Strapi Studio

The Strapi Studio allows you to easily build and manage your application environment +thanks to a powerful User Interface.

Log into the Strapi Studio with your user account (http://studio.strapi.io) +and follow the instructions to start the experience.

Strapi Studio Simply manage your APIs and relations thanks to the Strapi Studio.

Manage your data

Strapi comes with a simple but yet powerful dashboard.

Strapi Dashboard Create, read, update and delete your data.

Strapi Dashboard Manage user settings, login, registration, groups and permissions on the fly.

Resources

+ + + diff --git a/docs/.vuepress/dist/1.x.x/internationalization.html b/docs/.vuepress/dist/1.x.x/internationalization.html new file mode 100644 index 0000000000..19b317b9d7 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/internationalization.html @@ -0,0 +1,74 @@ + + + + + + Internationalization | Strapi Docs + + + + + + + +

Internationalization

Strapi provides built-in support for detecting user language preferences and translating +static words/sentences.

i18n settings

Settings for localization/internationalization may be configured in strapi.config.i18n. +The most common reason you'll need to modify these settings is to edit the list of your +application's supported locales and/or the location of your translation stringfiles.

Locales

Strapi reads JSON-formatted translation files from your project's ./config/locales +directory. Each file corresponds with a locale (usually a language) that your backend will support. +These files contain locale-specific strings (as JSON key-value pairs) that you can use in your +views, controllers, etc.

When your server is in production mode it will read these files only once and then cache +the result. It will not write any updated strings when in production mode.

Otherwise, the files will be read on every instantiation of the i18n object. +Additionally newly-detected strings will be automatically added, and written out, +to the locale JSON files.

These files contain locale-specific strings (as JSON key-value pairs) that you can use in your views, +controllers, etc. Here is an example locale file (./config/locales/fr.json):

{
+  "Hello!": "Bonjour!",
+  "Hello %s, how are you today?": "Bonjour %s, comment allez-vous aujourd'hui ?"
+}
+

Note that the keys in your stringfiles are case sensitive and require exact matches. +There are a few different schools of thought on the best approach here, and it really depends on +who/how often you'll be editing the stringfiles in the future. Especially if you'll be +editing the translations by hand, simpler, all-lowercase key names may be preferable for maintainability.

For example, here's another pass at ./config/locales/fr.json:

{
+  "hello": "Bonjour!",
+  "hello-how-are-you-today": "Bonjour %s, comment allez-vous aujourd'hui ?"
+}
+

And here's ./config/locales/en.json:

{
+  "hello": "Hello!",
+  "hello-how-are-you-today": "Hello %s, how are you today?"
+}
+

You can also nest locale strings. But a better approach would be to use . to represent nested strings. +For example, here's the list of labels for the index page of a user controller:

{
+  "user.index.label.id": "User ID",
+  "user.index.label.name": "User Name"
+}
+

Translate responses

Locales are accessible from everywhere in your application.

this.body = this.i18n.__('hello-how-are-you-today', 'John');
+// => "Hello John, how are you today?"
+

Different plural forms are supported as a response to count with this.i18n.__n(one, other, count).

Use this.i18n.__n() as you would use this.i18.__() directly:

this.body = this.i18n.__n('%s cat', '%s cats', 1);
+// => "1 cat"
+
+this.body = this.i18n.__n('%s cat', '%s cats', 3);
+// => "3 cats"
+

Or from locales:

{
+  "catEat": {
+    "one": "%d cat eats the %s",
+    "other": '%d cats eat the %s'
+  }
+}
+
this.body = this.i18n.__n('catEat', 10, 'mouse');
+// => "10 cats eat the mouse"
+
+ + + diff --git a/docs/.vuepress/dist/1.x.x/introduction.html b/docs/.vuepress/dist/1.x.x/introduction.html new file mode 100644 index 0000000000..2d27bab081 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/introduction.html @@ -0,0 +1,80 @@ + + + + + + Introduction | Strapi Docs + + + + + + + +

Introduction


Important Note: Strapi 1.x is on maintenance only. Development focuses on the upcoming Strapi 3.0.


Strapi is an open-source Node.js rich framework for building applications and services.

Strapi enables developers to focus on writing reusable application logic instead of spending time +building infrastructure. It is designed for building practical, production-ready Node.js applications +in a matter of hours instead of weeks.

The framework sits on top of Koa. Its ensemble of small modules work +together to provide simplicity, maintainability, and structural conventions to Node.js applications.

Getting Started

Installation

Install the latest stable release with the npm command-line tool:

$ npm install strapi -g
+

Create your first project

You now are able to use the Strapi CLI. Simply create your first application and start the server:

$ strapi new <appName>
+$ cd <appName>
+$ strapi start
+

The default home page is accessible at http://localhost:1337/.

Create your first API

$ strapi generate api <apiName>
+

For example, you can create a car API with a name (name), year (year) and +the license plate (license) with:

$ strapi generate api car name:string year:integer license:string
+

Alternatives

Dry Application

Note that you can generate a dry application using the dry option:

$ strapi new <appName> --dry
+

This will generate a Strapi application without:

  • the built-in user, email and upload APIs,
  • the grant hook,
  • the open-source admin panel,
  • the Waterline ORM (waterline and blueprints hooks disabled),
  • the Strapi Studio connection (studio hook disabled).

This feature allows you to only use Strapi for your HTTP server structure if you want to.

Create an API via the Strapi Studio

The Strapi Studio allows you to easily build and manage your application environment +thanks to a powerful User Interface.

Log into the Strapi Studio with your user account (http://studio.strapi.io) +and follow the instructions to start the experience.

We advise you to use our Studio to build APIs. To do so, you need to create a Strapi account. +Go to the Strapi Studio to signup. +Studio is dedicated to developers to build applications without writing +any single line of code thanks to its powerful set of tools.

After creating an account on the Strapi Studio, you are able to link your machine to your +Strapi Studio account to get access to all features offered by the Strapi ecosystem. +Use your Strapi account credentials.

$ strapi login
+

Key-features

100% JavaScript

Building on top of Strapi means your application is written entirely in JavaScript, +the language you and your team are already using in the browser.

Since you spend less time context-shifting, you're able to write code in a more consistent style, +which makes development more productive.

The entire Strapi framework is written in ES2015.

Getting started quickly

Strapi provides a robust layer for fundamental web applications to help you write your business +logic, without obscuring Node.js features that you know and love. Our goal is to make writing +business logic much easier than other frameworks.

Auto-generate REST APIs

Strapi comes with a generator that help jumpstart your application's backend without writing any code. Just run:

$ strapi generate api car
+

and you'll get an API that lets you read, paginate, sort, filter, create, destroy, update, +and associate cars.

Security

We take security very seriously. This is why Strapi comes with several security layers that just work +depending on your needs. Strapi provides configuration for CORS, CSRF, CSP, X-Frame-Options, XSS, HSTS, +HTTPS, SSL, proxy, IP filtering and ships reusable security policies.

No matter what you need to secure, Strapi is the right tool to make it right.

Datastore-agnostic

Strapi comes installed with a powerful ORM/ODM called Waterline, a datastore-agnostic tool that +dramatically simplifies interaction with one or more databases.

It provides an abstraction layer on top of the underlying database, allowing you to easily query +and manipulate your data without writing vendor-specific integration code.

Strapi offers a new take on the familiar relational model, aimed at making data modeling more practical. +You can do all the same things you might be used to (one-to-many, many-to-many), but you can also assign +multiple named associations per-model. Better yet, you can assign different models to different databases, +and your associations/joins will still work, even across NoSQL and relational boundries.

Strapi has no problem implicitly/automatically joining a SQL table with a NoSQL collection and vice versa.

Front-end agnostic

Strapi is compatible with any front-end strategy; whether it's Angular, Backbone, Ember, +iOS, Android, Windows Phone, or something else that hasn't been invented yet.

Plus it's easy to serve up the same API to be consumed by another web service or community of developers.

Convention over configuration

Convention over configuration is a consistent approach makes developing applications more +predictable and efficient for everybody involved.

If anyone on your team has worked with frameworks, Strapi will feel pretty familiar. +Not only that, but they can look at a Strapi project and know, generally, how to code up the basic +patterns they've implemented over and over again in the past; whether their background. +What about your second application, or your third? Each time you create a new Strapi application, +you start with a sane, familiar boilerplate that makes you more productive.

Configuration files give you extra opportunities for human error.

In many cases, you'll even be able to recycle some of your code.

Error Handling

By default outputs all errors to stderr unless NODE_ENV is test. +To perform custom error-handling logic such as centralized logging you can add an "error" event listener:

strapi.app.on('error', function (err) {
+  strapi.log.error('server error', err);
+});
+

If an error in the req/res cycle and it is not possible to respond to the client, +the Context instance is also passed:

strapi.app.on('error', function (err, ctx) {
+  strapi.log.error('server error', err, ctx);
+});
+

When an error occurs and it is still possible to respond to the client, +aka no data has been written to the socket, Strapi will respond appropriately with +a 500 "Internal Server Error". In either case an app-level "error" is emitted for logging purposes.

Different environments

Strapi has built in support for the idea of having a different set of settings for each environment. +Real applications have this too, but often the framework around them doesn't accommodate it and +you end up having to swap configuration files in and out to achieve the same effect.

Loose coupling

Strapi is flexible enough to allow you to explore and create when you have the time to but also +provides automation tools when you don't.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/logging.html b/docs/.vuepress/dist/1.x.x/logging.html new file mode 100644 index 0000000000..85435164b9 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/logging.html @@ -0,0 +1,73 @@ + + + + + + Logging | Strapi Docs + + + + + + + +

Logging

Strapi comes with a simple and useful built-in logger. +Its usage is purposely very similar to console.log(), but with a handful of +extra features; namely support for multiple log levels with colorized, +prefixed console output.

The logger is accessible through the strapi object directly with strapi.log.

You can work with this logger in the same way that you work with the default logger:

strapi.log.info('Logs work!');
+

Logging with Metadata

In addition to logging string messages, the logger will also optionally log additional +JSON metadata objects. Adding metadata is simple:

strapi.log.info('Test log message', {
+  anything: 'This is metadata'
+});
+

String interpolation

The log method provides the same string interpolation methods like util.format.

This allows for the following log messages.

strapi.log.info('test message %s', 'my string');
+// => info: test message my string
+
strapi.log.info('test message %d', 123);
+// => info: test message 123
+
strapi.log.info('test message %j', {
+  number: 123
+}, {});
+// => info: test message {"number":123}
+// => meta = {}
+
strapi.log.info('test message %s, %s', 'first', 'second', {
+  number: 123
+});
+// => info: test message first, second
+// => meta = {number: 123}
+
strapi.log.info('test message', 'first', 'second', {
+  number: 123
+});
+// => info: test message first second
+// => meta = {number: 123}
+
strapi.log.info('test message %s, %s', 'first', 'second', {
+  number: 123
+}, function() {});
+// => info: test message first, second
+// => meta = {number: 123}
+// => callback = function() {}
+
strapi.log.info('test message', 'first', 'second', {
+  number: 123
+}, function() {});
+// => info: test message first second
+// => meta = {number: 123}
+// => callback = function() {}
+

Logging levels

Setting the level for your logging message can be accomplished by using +the level specified methods defined.

strapi.log.debug('This is a debug log');
+strapi.log.info('This is an info log');
+strapi.log.warn('This is a warning log');
+strapi.log.error('This is an error log ');
+
+ + + diff --git a/docs/.vuepress/dist/1.x.x/models.html b/docs/.vuepress/dist/1.x.x/models.html new file mode 100644 index 0000000000..f6819208ad --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/models.html @@ -0,0 +1,416 @@ + + + + + + Models | Strapi Docs + + + + + + + +

Models

Strapi comes installed with a powerful Object-Relational-Mapper (ORM) called Waterline, +a datastore-agnostic tool that dramatically simplifies interaction with one or more databases.

Models represent a structure of data which requires persistent storage. The data may live in any data-store +but is interfaced in the same way. This allows your users to live in PostgreSQL and your user preferences +to live in MongoDB and you will interact with the data models in the exact same way.

If you're using MySQL, a model might correspond to a table. If you're using MongoDB, it might correspond +to a collection. In either case, the goal is to provide a simple, modular way of managing data without +relying on any one type of database.

Models are defined in the ./api/<apiName>/models directory.

Model settings

The following properties can be specified at the top level of your model definition to override +the defaults for that particular model.

For example, this a basic model Pet:

{
+  "identity": "pet",
+  "connection": "mongoDBServer",
+  "schema": true,
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true
+    },
+    "gender": {
+      "type": "string",
+      "enum": ["male", "female"]
+    },
+    "age": {
+      "type": "int",
+      "max": 100
+    },
+    "birthDate": {
+      "type": "date"
+    },
+    "breed": {
+      "type": "string"
+    }
+  },
+  "autoPK": true,
+  "autoCreatedAt": true,
+  "autoUpdatedAt": true
+}
+
+

schema

A flag to toggle schemaless or schema mode in databases that support schemaless data structures. +If turned off, this will allow you to store arbitrary data in a record. If turned on, only attributes +defined in the model's attributes object will be stored.

For adapters that don't require a schema, such as MongoDB or Redis, the schema key is set to false.

{
+  "schema": true|false
+}
+

connection

The configured database connection where this model will fetch and save its data. +Defaults to defaultSQLite, the default connection that uses the waterline-sqlite3 adapter.

{
+  "connection": "mongoDBServer"
+}
+

identity

The lowercase unique key for the model. By default, a model's identity is inferred automatically +by lowercasing its filename. You should never change this property on your models.

{
+  "identity": "petModel"
+}
+

globalId

This flag changes the global name by which you can access your model (if the globalization of models +is enabled). You should never change this property on your models.

{
+  "globaId": "pets"
+}
+

For example to access to your model function:

Pets.find().exec(function (error, pets) {
+  if (error) {
+    console.log(error);
+    return false;
+  }
+
+  console.log(pets);
+});
+

autoPK

A flag to toggle the automatic definition of a primary key in your model. +The details of this default primary key vary between adapters. In any case, the primary keys generated +by autoPK will be unique. If turned off no primary key will be created by default, and you will need +to define one manually using primaryKey: true for one of the model attributes.

{
+  "autoPK": true|false
+}
+

autoCreatedAt

A flag to toggle the automatic definition of a createdAt attribute in your model. +By default, createdAt is an attribute which will be automatically set when a record is created with +the current timestamp.

{
+  "autoCreatedAt": true|false
+}
+

autoUpdatedAt

A flag to toggle the automatic definition of a updatedAt attribute in your model. +By default, updatedAt is an attribute which will be automatically set with the current timestamp +every time a record is updated.

{
+  "autoUpdatedAt": true|false
+}
+

tableName

You can define a custom name for the physical collection in your adapter by adding a tableName +attribute. This isn't just for tables. In MySQL, PostgreSQL, Oracle, etc. this setting refers +to the name of the table, but in MongoDB or Redis, it refers to the collection, and so forth. +If no tableName is specified, Waterline will use the model's identity as its tableName.

This is particularly useful for working with pre-existing/legacy databases.

{
+  "tableName": "pets_table"
+}
+

attributes

Model attributes are basic pieces of information about a model. +A model called Pet might have attributes called name, gender, age, +birthday and breed.

Options can be used to enforce various constraints and add special enhancements to model attributes.

type

Specifies the type of data that will be stored in this attribute. One of:

  • string
  • text
  • integer
  • float
  • date
  • datetime
  • boolean
  • binary
  • array
  • json

Defaults to string if not specified.

Validations

Strapi bundles support for automatic validations of your models' attributes. +Any time a record is updated, or a new record is created, the data for each attribute will +be checked against all of your predefined validation rules. This provides a convenient failsafe +to ensure that invalid entries don't make their way into your application's database(s).

Validations are defined directly in your collection attributes.

  • after (date): Checks if string date in this record is after the specified Date. +Must be valid JavaScript Date.
  • alpha (boolean): Checks if string in this record contains only letters (a-zA-Z).
  • alphadashed (boolean): Checks if string in this record contains only numbers and/or dashes.
  • alphanumeric (boolean): Checks if string in this record contains only letters and numbers.
  • alphanumericdashed (boolean): Checks if string in this record contains only numbers and/or +letters and/or dashes.
  • array (boolean): Checks if this record is a valid JavaScript array object. +Strings formatted as arrays will fail.
  • before (date): Checks if string in this record is a date that's before the specified date.
  • binary (boolean): Checks if this record is a valid binary data. Strings will pass.
  • boolean (boolean): Checks if this record is a valid boolean. Strings will fail.
  • contains (string): Checks if string in this record contains the seed.
  • creditcard (boolean): Checks if string in this record is a credit card.
  • date (boolean): Checks if string in this record is a date takes both strings and JavaScript.
  • datetime (boolean): Checks if string in this record looks like a JavaScript datetime.
  • decimal (boolean): Checks if it contains a decimal or is less than 1.
  • email (boolean): Checks if string in this record looks like an email address.
  • empty (boolean): Checks if the entry is empty. Arrays, strings, or arguments objects with +a length of 0 and objects with no +own enumerable properties are considered empty.
  • equals (integer): Checks if string in this record is equal to the specified value. +They must match in both value and type.
  • falsey (boolean): Would a Javascript engine register a value of false on this?.
  • finite (boolean): Checks if given value is, or can be coerced to, a finite number. +This is not the same as native isFinite +which will return true for booleans and empty strings.
  • float (boolean): Checks if string in this record is of the number type float.
  • hexadecimal (boolean): Checks if string in this record is a hexadecimal number.
  • hexColor (boolean): Checks if string in this record is a hexadecimal color.
  • in (array): Checks if string in this record is in the specified array of allowed +string values.
  • int (boolean): Check if string in this record is an integer.
  • integer (boolean): Check if string in this record is an integer. Alias for int.
  • ip (boolean): Checks if string in this record is a valid IP (v4 or v6).
  • ipv4 (boolean): Checks if string in this record is a valid IP v4.
  • ipv6 (boolean): Checks if string in this record is aa valid IP v6.
  • json (boolean): Checks if the record is a JSON.
  • lowercase (boolean): Check if string in this record is in all lowercase.
  • max (integer): max value for an integer.
  • maxLength (integer):
  • min (integer): min value for an integer.
  • minLength (integer):
  • notContains (string): Checks if string in this record doesn't contain the seed.
  • notIn (array): does the value of this model attribute exist inside of the defined +validator value (of the same type). +Takes strings and arrays.
  • notNull (boolean): does this not have a value of null ?.
  • null (boolean): Checks if string in this record is null.
  • number (boolean): Checks if this record is a number. NaN is considered a number.
  • numeric (boolean): Checks if string in this record contains only numbers.
  • object (boolean): Checks if this attribute is the language type of Object. +Passes for arrays, functions, objects, +regexes, new Number(0), and new String('') !
  • regex (regex): Checks if the record matches the specific regex.
  • required (boolean): Must this model attribute contain valid data before a new +record can be created?.
  • string (boolean): Checks if the record is a string.
  • text (boolean): Checks if the record is a text.
  • truthy (boolean): Would a Javascript engine register a value of false on this?
  • undefined (boolean): Would a JavaScript engine register this thing as have the +value undefined?
  • uppercase (boolean): Checks if string in this record is uppercase.
  • url (boolean): Checks if string in this record is a URL.
  • urlish (boolean): Checks if string in this record contains something that looks like +a route, ending with a file extension.
  • uuid (boolean): Checks if string in this record is a UUID (v3, v4, or v5).
  • uuidv3 (boolean): Checks if string in this record is a UUID (v3).
  • uuidv4 (boolean): Checks if string in this record is a UUID (v4).

defaultsTo

When a record is created, if no value was supplied, the record will be created with the specified +defaultsTo value.

"attributes": {
+  "usersGroup": {
+    "type": "string",
+    "defaultsTo": "guess"
+  }
+}
+

autoIncrement

Sets up the attribute as an auto-increment key. When a new record is added to the model, +if a value for this attribute is not specified, it will be generated by incrementing the most recent +record's value by one.

Attributes which specify autoIncrement should always be of type: integer. +Also, bear in mind that the level of support varies across different datastores. +For instance, MySQL will not allow more than one auto-incrementing column per table.

"attributes": {
+  "placeInLine": {
+    "type": "integer",
+    "autoIncrement": true
+  }
+}
+

unique

Ensures no two records will be allowed with the same value for the target attribute. +This is an adapter-level constraint, so in most cases this will result in a unique index on the +attribute being created in the underlying datastore.

Defaults to false if not specified.

"attributes": {
+  "username": {
+    "type": "string",
+    "unique": true
+  }
+}
+

primaryKey

Use this attribute as the the primary key for the record. Only one attribute per model can be the +primaryKey. Defaults to false if not specified.

This should never be used unless autoPK is set to false.

"attributes": {
+  "uuid": {
+    "type": "string",
+    "primaryKey": true,
+    "required": true
+  }
+}
+

enum

A special validation property which only saves data which matches a whitelisted set of values.

"attributes": {
+  "gender": {
+    "type": "string",
+    "enum": ["male", "female"]
+  }
+}
+

size

If supported in the adapter, can be used to define the size of the attribute. +For example in MySQL, size can be specified as a number (n) to create a column with the SQL +data type: varchar(n).

"attributes": {
+  "name": {
+    "type": "string",
+    "size": 24
+  }
+}
+

columnName

Inside an attribute definition, you can specify a columnName to force Waterline to store data +for that attribute in a specific column in the configured connection. +Be aware that this is not necessarily SQL-specific. It will also work for MongoDB fields, etc.

While the columnName property is primarily designed for working with existing/legacy databases, +it can also be useful in situations where your database is being shared by other applications, +or you don't have access permissions to change the schema.

"attributes": {
+  "name": {
+    "type": "string",
+    "columnName": "pet_name"
+  }
+}
+

Associations

With Waterline you can associate models with other models across all data stores. +This means that your users can live in PostgreSQL and their photos can live in MongoDB +and you can interact with the data as if they lived together on the same database. +You can also have associations that live on separate connections or in different databases +within the same adapter.

One-Way associations

A one-way association is where a model is associated with another model. +You could query that model and populate to get the associated model. +You can't however query the associated model and populate to get the associating model.

In this example, we are associating a User with a Pet but not a Pet with a User. +Because we have only formed an association on one of the models, a Pet has no restrictions +on the number of User models it can belong to. If we wanted to, we could change this and +associate the Pet with exactly one User and the User with exactly one Pet.

./api/pet/models/Pet.settings.json:

{
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true,
+      "unique": true
+    },
+    "color": {
+      "type": "string",
+      "required": true
+    }
+  }
+}
+

./api/user/models/User.settings.json:

{
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true,
+      "unique": true
+    },
+    "color": {
+      "type": "string",
+      "required": true
+    },
+    "pony": {
+      "model": "pet"
+    }
+  }
+}
+

One-to-One associations

A one-to-one association states that a model may only be associated with one other model. +In order for the model to know which other model it is associated with a foreign key must +be included in the record.

In this example, we are associating a Pet with a User. The User may only have one +Pet and viceversa, a Pet can only have one User. However, in order to query this association +from both sides, you will have to create/update both models.

./api/pet/models/Pet.settings.json:

{
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true,
+      "unique": true
+    },
+    "color": {
+      "type": "string",
+      "required": true
+    },
+    "owner": {
+      "model": "user"
+    }
+  }
+}
+

./api/user/models/User.settings.json:

{
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true,
+      "unique": true
+    },
+    "age": {
+      "type": "integer",
+      "required": true
+    },
+    "pony": {
+      "model": "pet"
+    }
+  }
+}
+

One-to-Many associations

A one-to-many association states that a model can be associated with many other models. +To build this association a virtual attribute is added to a model using the collection property. +In a one-to-many association one side must have a collection attribute and the other side must contain a +model attribute. This allows the many side to know which records it needs to get when a populate is used.

Because you may want a model to have multiple one-to-many associations on another model a via key is +needed on the collection attribute. This states which model attribute on the one side of the association +is used to populate the records.

In this example, a User can have several Pet, but a Pet has only one owner (from the User model).

./api/pet/models/Pet.settings.json:

{
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true,
+      "unique": true
+    },
+    "color": {
+      "type": "string",
+      "required": true
+    },
+    "owner": {
+      "model": "user"
+    }
+  }
+}
+

./api/user/models/User.settings.json:

{
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true,
+      "unique": true
+    },
+    "age": {
+      "type": "integer",
+      "required": true
+    },
+    "pets": {
+      "collection": "pet",
+      "via": "owner"
+    }
+  }
+}
+

Many-to-Many associations

A many-to-many association states that a model can be associated with many other models +and vice-versa. Because both models can have many related models a new join table will +need to be created to keep track of these relations.

Waterline will look at your models and if it finds that two models both have collection +attributes that point to each other, it will automatically build up a join table for you.

Because you may want a model to have multiple many-to-many associations on another model +a via key is needed on the collection attribute. This states which model attribute on the +one side of the association is used to populate the records.

Using the User and Pet example lets look at how to build a schema where a User may +have many Pet records and a Pet may have multiple owners.

In this example, we will start with an array of users and an array of pets. +We will create records for each element in each array then associate all of the Pets with all +of the Users. If everything worked properly, we should be able to query any User and see that +they own all of the Pets. Furthermore, we should be able to query any Pet and see that +it is owned by every User.

./api/pet/models/Pet.settings.json:

{
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true,
+      "unique": true
+    },
+    "color": {
+      "type": "string",
+      "required": true
+    },
+    "owners": {
+      "collection": "user",
+      "via": "pets"
+    }
+  }
+}
+

./api/user/models/User.settings.json:

{
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true,
+      "unique": true
+    },
+    "age": {
+      "type": "integer",
+      "required": true
+    },
+    "pets": {
+      "collection": "pet",
+      "via": "owners"
+    }
+  }
+}
+

Lifecycle Callbacks

Lifecycle callbacks are functions you can define to run at certain times in a query. +They are hooks that you can tap into in order to change data.

Strapi exposes a handful of lifecycle callbacks by default.

Callbacks on create

  • beforeValidate: fn(values, cb)
  • afterValidate: fn(values, cb)
  • beforeCreate: fn(values, cb)
  • afterCreate: fn(newlyInsertedRecord, cb)

Callbacks on update

  • beforeValidate: fn(valuesToUpdate, cb)
  • afterValidate: fn(valuesToUpdate, cb)
  • beforeUpdate: fn(valuesToUpdate, cb)
  • afterUpdate: fn(updatedRecord, cb)

Callbacks on destroy

  • beforeDestroy: fn(criteria, cb)
  • afterDestroy: fn(deletedRecord, cb)

For example, this could be your ./api/pet/models/Pet.js file:

module.exports = {
+  /**
+   * Basic settings
+   */
+
+  // The identity to use.
+  identity: settings.identity,
+
+  // The connection to use.
+  connection: settings.connection,
+
+  // Do you want to respect schema?
+  schema: settings.schema,
+
+  // Merge simple attributes from settings with those ones.
+  attributes: _.merge(settings.attributes, {
+
+  }),
+
+  // Do you automatically want to have time data?
+  autoCreatedAt: settings.autoCreatedAt,
+  autoUpdatedAt: settings.autoUpdatedAt,
+
+  /**
+   * Lifecycle callbacks on create
+   */
+
+  // Before creating a value.
+  beforeCreate: function (values, next) {
+    // Do some stuff
+    next();
+  },
+
+  // After creating a value.
+  afterCreate: function (newlyInsertedRecord, next) {
+    // Do some stuff
+    next();
+  },
+
+  /**
+   * Lifecycle callbacks on update
+   */
+
+  // Before updating a value.
+  beforeUpdate: function (valuesToUpdate, next) {
+    // Do some stuff
+    next();
+  },
+
+  // After updating a value.
+  afterUpdate: function (updatedRecord, next) {
+    // Do some stuff
+    next();
+  },
+
+  /**
+   * Lifecycle callbacks on destroy
+   */
+
+  // Before destroying a value.
+  beforeDestroy: function (criteria, next) {
+    // Do some stuff
+    next();
+  },
+
+  // After destroying a value.
+  afterDestroy: function (destroyedRecords, next) {
+    // Do some stuff
+    next();
+  }
+
+ + + diff --git a/docs/.vuepress/dist/1.x.x/queries.html b/docs/.vuepress/dist/1.x.x/queries.html new file mode 100644 index 0000000000..6664029b17 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/queries.html @@ -0,0 +1,311 @@ + + + + + + Query Interface | Strapi Docs + + + + + + + +

Query Interface

The Waterline Query Interface allows you to interact with your models the same +way no matter which adapter they are using. This means you can use the same Query +Language whether your data lives in MySQL, MongoDB, PostgreSQL, etc.

Query Methods

Every model in Waterline will have a set of query methods exposed on it to allow +you to interact with the database in a normalized fashion. +These are known as the CRUD (Create, Read, Update and Delete) methods and +is the primary way of interacting with your data.

There are also a special set of queries known as dynamic queries. +These are special class methods that are dynamically generated when you initialize Waterline. +We call them dynamic finders. They perform many of the same functions as the other class +methods but you can call them directly on an attribute in your model.

For most class methods, the callback parameter is optional and if one is not supplied, +it will return a chainable object.

.find(criteria, [callback])

find will return an array of records that match the supplied criteria. +Criteria can be built using the Query Language.

  • The criteria is required and accepts {}, [{}], string and int data types.
  • The callback function is optional.

Any string arguments passed must be the ID of the record. +This method will always return records in an array. +If you are trying to find an attribute that is an array, you must wrap it in an additional +set of brackets otherwise Waterline will think you want to perform an inQuery.

User.find({
+    name: 'Walter Jr'
+  })
+  .exec(function (err, users) {
+    if (err) {
+      console.log(err);
+    }
+    console.log(users);
+  });
+

.findOne(criteria, [callback])

findOne will return an object with the first matching result in the data store.

  • The criteria is required and accepts {}, [{}], string and int data types.
  • The callback function is optional.

Any string arguments passed must be the ID of the record. +If you are trying to find an attribute that is an array, you must wrap it in an additional +set of brackets otherwise Waterline will think you want to perform an inQuery.

User.findOne({
+    name: 'Walter Jr'
+  })
+  .exec(function (err, user) {
+    if (err) {
+      console.log(err);
+    }
+    console.log(user);
+  });
+

.create(criteria, [callback])

create will attempt to create a new record in the datastore. +If the data is valid and passes all validations it will be sent to the adapters create method.

  • The criteria is required and accepts {} and [{}] data types.
  • The callback function is optional.
User.create({
+    name: 'Walter Jr'
+  })
+  .exec(function (err, user) {
+    if (err) {
+      console.log(err);
+    }
+    console.log(user);
+  });
+

.findOrCreate(criteria, [values, callback])

findOrCreate will return a single record if one was found or created, +or an array of records if multiple get found/created via the supplied criteria or values. +Criteria can be built using the Query Language.

  • The criteria is required and accepts {}, [{}], string and int data types.
  • The values is optional and accepts {} and [{}] data types.
  • The callback function is optional.

Any string arguments passed must be the ID of the record. +This method can return a single record or an array of records. +If a model is not found and creation values are omitted, it will get created with the supplied criteria values.

Unless an adapter implements its own version of findOrCreate, findOrCreate will do the +find and create calls in two separate steps (not transactional). +In a high frequency scenario it's possible for duplicates to be created if the query field(s) are not indexed.

Either user(s) with the name "Walter Jr" get returned or +a single user gets created with the name "Walter Jr" and returned:

User.findOrCreate({
+    name: 'Walter Jr'
+  })
+  .exec(function (err, users) {
+    if (err) {
+      console.log(err);
+    }
+    console.log(users);
+  });
+

.update(search criteria, values, [callback])

update will attempt to update any records matching the criteria passed in. +Criteria can be built using the Query Language.

  • The criteria is required and accepts {}, [{}], string and int data types.
  • The values is required and accepts {} and [{}] data types.
  • The callback function is optional.

Although you may pass .update() an object or an array of objects, +it will always return an array of objects. Any string arguments passed must be the ID +of the record. If you specify a primary key instead of a criteria object, +any .where() filters will be ignored.

User.update({
+    name: 'Walter Jr'
+  }, {
+    name: 'Flynn'
+  })
+  .exec(function (err, user) {
+    if (err) {
+      console.log(err);
+    }
+    console.log(user);
+  });
+

.destroy(criteria, [callback])

destroy will destroy any records matching the provided criteria. +Criteria can be built using the Query Language.

  • The criteria is required and accepts {}, [{}], string and int data types.
  • The callback function is optional.

If you want to confirm the record exists before you delete it, +you must first perform a .find(). Any string arguments passed must be the ID of the record.

User.destroy({
+    name: 'Flynn'
+  })
+  .exec(function (err) {
+    if (err) {
+      console.log(err);
+    }
+  });
+

.query(query, [data], callback)

Some adapters, such as sails-mysql and sails-postgresql, support the query function +which will run the provided RAW query against the database. +This can sometimes be useful if you want to run complex queries and performance is very important.

  • The query is required and accepts string data types.
  • The data is optional and accepts array data types.
  • The callback function is required.

The type of the results returned depend on your adapter: sails-mysql returns an array of objects +and sails-postgresql returns an object containing metadata and the actual results within a 'rows' array. +This function does currently not support promises.

Using PostgreSQL:

const title = "The King's Speech";
+Movie.query('SELECT * FROM movie WHERE title = $1', [title], function (err, results) {
+  console.log('Found the following movie: ', results.rows[0]);
+});
+

Using MySQL:

const title = "The King's Speech";
+Movie.query('SELECT * FROM movie WHERE title = $1', [title], function (err, results) {
+  console.log('Found the following movie: ', results[0]);
+});
+

Query Language

The Waterline Query Language is an object based criteria used to retrieve the +records from any of the supported database adapters. +This allows you to change your database without changing your codebase.

All queries inside of Waterline are case insensitive. This allows for easier querying +but makes indexing strings tough. This is something to be aware of if you are +indexing and searching on string fields.

Query Language Basics

The criteria objects are formed using one of four types of object keys. +These are the top level keys used in a query object. It is loosely based on the +criteria used in MongoDB with a few slight variations.

Queries can be built using either a where key to specify attributes, +which will allow you to also use query options such as limit and skip or +if where is excluded the entire object will be treated as a where criteria.

User.find({
+  where: {
+    name: 'John'
+  },
+  skip: 20,
+  limit: 10,
+  sort: 'name DESC'
+});
+

Or:

User.find({
+  name: 'John'
+});
+

Key Pairs

A key pair can be used to search records for values matching exactly what is specified. +This is the base of a criteria object where the key represents an attribute on a model +and the value is a strict equality check of the records for matching values.

User.find({
+  name: 'John'
+});
+

They can be used together to search multiple attributes:

User.find({
+  name: 'John',
+  country: 'France'
+});
+

Modified Pairs

Modified pairs also have model attributes for keys but they also use any of the +supported criteria modifiers to perform queries where a strict equality check wouldn't work.

User.find({
+  name: {
+    contains: 'alt'
+  }
+})
+

In Pairs

In queries work similarly to MySQL in queries. Each element in the array is treated as or.

User.find({
+  name: ['John', 'Walter']
+});
+

Not-In Pairs

Not-In queries work similar to in queries, except for the nested object criteria.

User.find({
+  name: {
+    '!': ['John', 'Walter']
+  }
+});
+

Or Pairs

Performing OR queries is done by using an array of query pairs. +Results will be returned that match any of the criteria objects inside the array.

User.find({
+  or: [
+    {
+      name: 'John'
+    },
+    {
+      occupation: 'Developer'
+    }
+  ]
+});
+

Criteria Modifiers

The following modifiers are available to use when building queries:

  • < or lessThan
  • <= or lessThanOrEqual
  • > or greaterThan
  • >= or greaterThanOrEqual
  • ! or not
  • like
  • contains
  • startsWith
  • endsWith

< or lessThan

Searches for records where the value is less than the value specified.

User.find({
+  age: {
+    '<': 30
+  }
+});
+

<= or lessThanOrEqual

Searches for records where the value is less or equal to the value specified.

User.find({
+  age: {
+    '<=': 21
+  }
+});
+

> or greaterThan

Searches for records where the value is more than the value specified.

User.find({
+  age: {
+    '>': 18
+  }
+});
+

>= or greaterThanOrEqual

Searches for records where the value is more or equal to the value specified.

User.find({
+  age: {
+    '>=': 21
+  }
+});
+

! or not

Searches for records where the value is not equal to the value specified.

User.find({
+  name: {
+    '!': 'John'
+  }
+});
+

like

Searches for records using pattern matching with the % sign.

User.find({
+  food: {
+    'like': '%burgers'
+  }
+});
+

contains

A shorthand for pattern matching both sides of a string. +Will return records where the value contains the string anywhere inside of it.

User.find({
+  class: {
+    'like': '%history%'
+  }
+});
+
User.find({
+  class: {
+    'contains': 'history'
+  }
+});
+

startsWith

A shorthand for pattern matching the right side of a string +Will return records where the value starts with the supplied string value.

User.find({
+  class: {
+    'startsWith': 'french'
+  }
+});
+
User.find({
+  class: {
+    'like': 'french%'
+  }
+});
+

endsWith

A shorthand for pattern matching the left side of a string. +Will return records where the value ends with the supplied string value.

User.find({
+  class: {
+    'endsWith': 'can'
+  }
+});
+
User.find({
+  class: {
+    'like': '%can'
+  }
+});
+

Date Ranges

You can do date range queries using the comparison operators.

User.find({
+  date: {
+    '>': new Date('2/4/2014'),
+    '<': new Date('2/7/2014')
+  }
+});
+

Query Options

Query options allow you refine the results that are returned from a query.

Limit results

Limit the number of results returned from a query.

User.find({
+  where: {
+    name: 'John'
+  },
+  limit: 20
+});
+

Skip results

Return all the results excluding the number of items to skip.

User.find({
+  where: {
+    name: 'John'
+  },
+  skip: 10
+});
+

Pagination

skip and limit can be used together to build up a pagination system.

User.find({
+  where: {
+    name: 'John'
+  },
+  limit: 10,
+  skip: 10
+});
+

Sort results

Results can be sorted by attribute name. Simply specify an attribute name for +natural (ascending) sort, or specify an asc or desc flag for ascending or +descending orders respectively.

Sort by name in ascending order:

User.find({
+  where: {
+    name: 'John'
+  },
+  sort: 'name'
+});
+

Sort by name in descending order:

User.find({
+  where: {
+    name: 'John'
+  },
+  sort: 'name DESC'
+});
+

Sort by name in ascending order:

User.find({
+  where: {
+    name: 'John'
+  },
+  sort: 'name ASC'
+});
+

Sort by binary notation

User.find({
+  where: {
+    name: 'John'
+  },
+  sort: {
+    name: 1
+  }
+});
+

Sort by multiple attributes:

User.find({
+  where: {
+    name: 'John'
+  },
+  sort: {
+    name:  1,
+    age: 0
+  }
+});
+

Select a field

Apply a projection to a Waterline query.

This example only returns the field name:

User.find({
+  where: {
+    age: {
+      '<': 30
+    }
+  },
+  select: ['name']
+});
+
+ + + diff --git a/docs/.vuepress/dist/1.x.x/request.html b/docs/.vuepress/dist/1.x.x/request.html new file mode 100644 index 0000000000..4d51dd4c1a --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/request.html @@ -0,0 +1,174 @@ + + + + + + Request | Strapi Docs + + + + + + + +

Request

A Strapi Request object is an abstraction on top of Node's vanilla request object, +providing additional functionality that is useful for every day HTTP server +development.

API

request.header

Request header object.

request.headers

Request header object. Alias as request.header.

request.method

Request method.

request.method=

Set request method, useful for implementing middleware +such as methodOverride().

request.length

Return request Content-Length as a number when present, or undefined.

request.url

Get request URL.

request.url=

Set request URL, useful for url rewrites.

request.originalUrl

Get request original URL.

request.origin

Get origin of URL, include protocol and host.

this.request.origin
+// => http://example.com
+

request.href

Get full request URL, include protocol, host and url.

this.request.href
+// => http://example.com/foo/bar?q=1
+

request.path

Get request pathname.

request.path=

Set request pathname and retain query-string when present.

request.querystring

Get raw query string void of ?.

request.querystring=

Set raw query string.

Get raw query string with the ?.

request.search=

Set raw query string.

request.host

Get host (hostname:port) when present. Supports X-Forwarded-Host +when strapi.app.proxy is true, otherwise Host is used.

request.hostname

Get hostname when present. Supports X-Forwarded-Host +when strapi.app.proxy is true, otherwise Host is used.

request.type

Get request Content-Type void of parameters such as "charset".

const ct = this.request.type;
+// => "image/png"
+

request.charset

Get request charset when present, or undefined:

this.request.charset
+// => "utf-8"
+

request.query

Get parsed query-string, returning an empty object when no +query-string is present. Note that this getter does not +support nested parsing.

For example "color=blue&size=small":

{
+  color: 'blue',
+  size: 'small'
+}
+

request.query=

Set query-string to the given object. Note that this +setter does not support nested objects.

this.query = { next: '/login' };
+

request.fresh

Check if a request cache is "fresh", aka the contents have not changed. This +method is for cache negotiation between If-None-Match / ETag, and +If-Modified-Since and Last-Modified. It should be referenced after setting +one or more of these response headers.

// freshness check requires status 20x or 304
+this.status = 200;
+this.set('ETag', '123');
+
+// cache is ok
+if (this.fresh) {
+  this.status = 304;
+  return;
+}
+
+// cache is stale
+// fetch new data
+this.body = yield db.find('something');
+

request.stale

Inverse of request.fresh.

request.protocol

Return request protocol, "https" or "http". Supports X-Forwarded-Proto +when strapi.app.proxy is true.

request.secure

Shorthand for this.protocol == "https" to check if a request was +issued via TLS.

request.ip

Request remote address. Supports X-Forwarded-For when strapi.app.proxy +is true.

request.ips

When X-Forwarded-For is present and strapi.app.proxy is enabled an array +of these ips is returned, ordered from upstream -> downstream. When disabled +an empty array is returned.

request.subdomains

Return subdomains as an array.

Subdomains are the dot-separated parts of the host before the main domain of +the app. By default, the domain of the app is assumed to be the last two +parts of the host. This can be changed by setting strapi.app.subdomainOffset.

For example, if the domain is "tobi.ferrets.example.com": +If strapi.app.subdomainOffset is not set, this.subdomains is ["ferrets", "tobi"]. +If strapi.app.subdomainOffset is 3, this.subdomains is ["tobi"].

request.is(types...)

Check if the incoming request contains the "Content-Type" +header field, and it contains any of the give mime types. +If there is no request body, undefined is returned. +If there is no content type, or the match fails false is returned. +Otherwise, it returns the matching content-type.

// With Content-Type: text/html; charset=utf-8
+this.is('html'); // => 'html'
+this.is('text/html'); // => 'text/html'
+this.is('text/*', 'text/html'); // => 'text/html'
+
+// When Content-Type is application/json
+this.is('json', 'urlencoded'); // => 'json'
+this.is('application/json'); // => 'application/json'
+this.is('html', 'application/*'); // => 'application/json'
+
+this.is('html'); // => false
+

For example if you want to ensure that +only images are sent to a given route:

if (this.is('image/*')) {
+  // process
+} else {
+  this.throw(415, 'images only!');
+}
+

Content Negotiation

Strapi's request object includes helpful content negotiation utilities powered by +accepts and +negotiator.

These utilities are:

  • request.accepts(types)
  • request.acceptsEncodings(types)
  • request.acceptsCharsets(charsets)
  • request.acceptsLanguages(langs)

If no types are supplied, all acceptable types are returned.

If multiple types are supplied, the best match will be returned. If no matches are found, +a false is returned, and you should send a 406 "Not Acceptable" response to the client.

In the case of missing accept headers where any type is acceptable, the first type will +be returned. Thus, the order of types you supply is important.

request.accepts(types)

Check if the given type(s) is acceptable, returning the best match when true, otherwise +false. The type value may be one or more mime type string +such as "application/json", the extension name +such as "json", or an array ["json", "html", "text/plain"].

// Accept: text/html
+this.accepts('html');
+// => "html"
+
+// Accept: text/*, application/json
+this.accepts('html');
+// => "html"
+this.accepts('text/html');
+// => "text/html"
+this.accepts('json', 'text');
+// => "json"
+this.accepts('application/json');
+// => "application/json"
+
+// Accept: text/*, application/json
+this.accepts('image/png');
+this.accepts('png');
+// => false
+
+// Accept: text/*;q=.5, application/json
+this.accepts(['html', 'json']);
+this.accepts('html', 'json');
+// => "json"
+
+// No Accept header
+this.accepts('html', 'json');
+// => "html"
+this.accepts('json', 'html');
+// => "json"
+

You may call this.accepts() as many times as you like, +or use a switch:

switch (this.accepts('json', 'html', 'text')) {
+  case 'json': break;
+  case 'html': break;
+  case 'text': break;
+  default: this.throw(406, 'json, html, or text only');
+}
+

request.acceptsEncodings(encodings)

Check if encodings are acceptable, returning the best match when true, otherwise false. +Note that you should include identity as one of the encodings!

// Accept-Encoding: gzip
+this.acceptsEncodings('gzip', 'deflate', 'identity');
+// => "gzip"
+
+this.acceptsEncodings(['gzip', 'deflate', 'identity']);
+// => "gzip"
+

When no arguments are given all accepted encodings +are returned as an array:

// Accept-Encoding: gzip, deflate
+this.acceptsEncodings();
+// => ["gzip", "deflate", "identity"]
+

Note that the identity encoding (which means no encoding) could be unacceptable if +the client explicitly sends identity;q=0. Although this is an edge case, you should +still handle the case where this method returns false.

request.acceptsCharsets(charsets)

Check if charsets are acceptable, returning +the best match when true, otherwise false.

// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5
+this.acceptsCharsets('utf-8', 'utf-7');
+// => "utf-8"
+
+this.acceptsCharsets(['utf-7', 'utf-8']);
+// => "utf-8"
+

When no arguments are given all accepted charsets +are returned as an array:

// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5
+this.acceptsCharsets();
+// => ["utf-8", "utf-7", "iso-8859-1"]
+

request.acceptsLanguages(langs)

Check if langs are acceptable, returning +the best match when true, otherwise false.

// Accept-Language: en;q=0.8, es, pt
+this.acceptsLanguages('es', 'en');
+// => "es"
+
+this.acceptsLanguages(['en', 'es']);
+// => "es"
+

When no arguments are given all accepted languages +are returned as an array:

// Accept-Language: en;q=0.8, es, pt
+this.acceptsLanguages();
+// => ["es", "pt", "en"]
+

request.idempotent

Check if the request is idempotent.

request.socket

Return the request socket.

request.get(field)

Return request header.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/response.html b/docs/.vuepress/dist/1.x.x/response.html new file mode 100644 index 0000000000..454bd8c59a --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/response.html @@ -0,0 +1,94 @@ + + + + + + Response | Strapi Docs + + + + + + + +

Response

A Strapi Response object is an abstraction on top of Node's vanilla response object, +providing additional functionality that is useful for every day HTTP server +development.

API

response.header

Response header object.

response.headers

Response header object. Alias as response.header.

response.socket

Request socket.

response.status

Get response status. By default, response.status is not set unlike Node's +res.statusCode which defaults to 200.

response.status=

Set response status via numeric code:

  • 100 "continue"
  • 101 "switching protocols"
  • 102 "processing"
  • 200 "ok"
  • 201 "created"
  • 202 "accepted"
  • 203 "non-authoritative information"
  • 204 "no content"
  • 205 "reset content"
  • 206 "partial content"
  • 207 "multi-status"
  • 300 "multiple choices"
  • 301 "moved permanently"
  • 302 "moved temporarily"
  • 303 "see other"
  • 304 "not modified"
  • 305 "use proxy"
  • 307 "temporary redirect"
  • 400 "bad request"
  • 401 "unauthorized"
  • 402 "payment required"
  • 403 "forbidden"
  • 404 "not found"
  • 405 "method not allowed"
  • 406 "not acceptable"
  • 407 "proxy authentication required"
  • 408 "request time-out"
  • 409 "conflict"
  • 410 "gone"
  • 411 "length required"
  • 412 "precondition failed"
  • 413 "request entity too large"
  • 414 "request-uri too large"
  • 415 "unsupported media type"
  • 416 "requested range not satisfiable"
  • 417 "expectation failed"
  • 418 "i'm a teapot"
  • 422 "unprocessable entity"
  • 423 "locked"
  • 424 "failed dependency"
  • 425 "unordered collection"
  • 426 "upgrade required"
  • 428 "precondition required"
  • 429 "too many requests"
  • 431 "request header fields too large"
  • 500 "internal server error"
  • 501 "not implemented"
  • 502 "bad gateway"
  • 503 "service unavailable"
  • 504 "gateway time-out"
  • 505 "http version not supported"
  • 506 "variant also negotiates"
  • 507 "insufficient storage"
  • 509 "bandwidth limit exceeded"
  • 510 "not extended"
  • 511 "network authentication required"

Don't worry too much about memorizing these strings, if you have a typo an error will be thrown, +displaying this list so you can make a correction.

response.message

Get response status message. By default, response.message is +associated with response.status.

response.message=

Set response status message to the given value.

response.length=

Set response Content-Length to the given value.

response.length

Return response Content-Length as a number when present, or deduce +from this.body when possible, or undefined.

response.body

Get response body.

response.body=

Set response body to one of the following:

  • string written
  • Buffer written
  • Stream piped
  • Object json-stringified
  • null no content response

If response.status has not been set, Strapi will automatically set the status to 200 or 204.

String

The Content-Type is defaulted to text/html or text/plain, both with +a default charset of utf-8. The Content-Length field is also set.

Buffer

The Content-Type is defaulted to application/octet-stream, and Content-Length +is also set.

Stream

The Content-Type is defaulted to application/octet-stream.

Object

The Content-Type is defaulted to application/json.

response.get(field)

Get a response header field value with case-insensitive field.

const etag = this.get('ETag');
+

response.set(field, value)

Set response header field to value:

this.set('Cache-Control', 'no-cache');
+

response.append(field, value)

Append additional header field with value val.

this.append('Link', '<http://127.0.0.1/>');
+

response.set(fields)

Set several response header fields with an object:

this.set({
+  'Etag': '1234',
+  'Last-Modified': date
+});
+

response.remove(field)

Remove header field.

response.type

Get response Content-Type void of parameters such as "charset".

const ct = this.type;
+// => "image/png"
+

response.type=

Set response Content-Type via mime string or file extension.

this.type = 'text/plain; charset=utf-8';
+this.type = 'image/png';
+this.type = '.png';
+this.type = 'png';
+

Note: when appropriate a charset is selected for you, for +example response.type = 'html' will default to "utf-8", however +when explicitly defined in full as response.type = 'text/html' +no charset is assigned.

response.is(types...)

Very similar to this.request.is(). +Check whether the response type is one of the supplied types. +This is particularly useful for creating middleware that +manipulate responses.

For example, this is a middleware that minifies +all HTML responses except for streams.

const minify = require('html-minifier');
+
+strapi.app.use(function *minifyHTML(next) {
+  yield next;
+
+  if (!this.response.is('html')) {
+    return;
+  }
+
+  const body = this.body;
+  if (!body || body.pipe) {
+    return;
+  }
+
+  if (Buffer.isBuffer(body)) {
+    body = body.toString();
+  }
+
+  this.body = minify(body);
+});
+

response.redirect(url, [alt])

Perform a [302] redirect to url.

The string "back" is special-cased +to provide Referrer support, when Referrer +is not present alt or "/" is used.

this.redirect('back');
+this.redirect('back', '/index.html');
+this.redirect('/login');
+this.redirect('http://google.com');
+

To alter the default status of 302, simply assign the status +before or after this call. To alter the body, assign it after this call:

this.status = 301;
+this.redirect('/cart');
+this.body = 'Redirecting to shopping cart';
+

response.attachment([filename])

Set Content-Disposition to "attachment" to signal the client +to prompt for download. Optionally specify the filename of the +download.

response.headerSent

Check if a response header has already been sent. Useful for seeing +if the client may be notified on error.

response.lastModified

Return the Last-Modified header as a Date, if it exists.

response.lastModified=

Set the Last-Modified header as an appropriate UTC string. +You can either set it as a Date or date string.

this.response.lastModified = new Date();
+

response.etag=

Set the ETag of a response including the wrapped "s. +Note that there is no corresponding response.etag getter.

this.response.etag = crypto.createHash('md5').update(this.body).digest('hex');
+

response.vary(field)

Vary on field.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/router.html b/docs/.vuepress/dist/1.x.x/router.html new file mode 100644 index 0000000000..4532f990de --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/router.html @@ -0,0 +1,132 @@ + + + + + + Router | Strapi Docs + + + + + + + +

Router

The most basic feature of any web application is the ability to interpret a request sent to a URL, +then send back a response. In order to do this, your application has to be able to distinguish one URL +from another.

Like most web frameworks, Strapi provides a router: a mechanism for mapping URLs to controllers. +Routes are rules that tell Strapi what to do when faced with an incoming request.

Routes can be found in ./api/<apiName>/config/routes.json.

Route format

Each route consists of an address (as a key) and a target (as an object value). +The address is a URL path and a specific HTTP method. The target is defined by an object with a +controller and an action. When the router receives an incoming request, it checks the address +of all routes for matches. If a matching route is found, the request is then passed to its target.

  {
+    "routes": {
+      "VERB /endpoint/:param": {
+        "controller": "controllerName",
+        "action": "actionName"
+      }
+    }
+  }
+

For example to manage your Post records with a CRUD, your route should look like this:

  {
+    "routes": {
+      "GET /post": {
+        "controller": "Post",
+        "action": "find"
+      }
+      "GET /post/:id": {
+        "controller": "Post",
+        "action": "findOne"
+      },
+      "POST /post": {
+        "controller": "Post",
+        "action": "create"
+      },
+      "PUT /post/:id": {
+        "controller": "Post",
+        "action": "update"
+      },
+      "DELETE /post/:id": {
+        "controller": "Post",
+        "action": "delete"
+      }
+    }
+  }
+

Route parameters

Route paths will be translated to regular expressions used to match requests. +Query strings will not be considered when matching requests.

Route parameters are captured and added to ctx.params or ctx.request.body.

By taking the previous example, your Post controller should look like this:

module.exports = {
+
+  // GET request
+  find: function *() {
+    try {
+      this.body = yield Post.find(this.params);
+    } catch (error) {
+      this.body = error;
+    }
+  },
+
+  findOne: function *() {
+    try {
+      this.body = yield Post.findOne(this.params);
+    } catch (error) {
+      this.body = error;
+    }
+  },
+
+  // POST request
+  create: function *() {
+    try {
+      this.body = yield Post.create(this.request.body);
+    } catch (error) {
+      this.body = error;
+    }
+  },
+
+  // PUT request
+  update: function *() {
+    try {
+      this.body = yield Post.update(this.params.id, this.request.body);
+    } catch (error) {
+      this.body = error;
+    }
+  },
+
+  // DELETE request
+  delete: function *() {
+    try {
+      this.body = yield Post.destroy(this.params);
+    } catch (error) {
+      this.body = error;
+    }
+  }
+};  
+
+

Router prefix

Keep in mind routes can automatically be prefixed in ./config/general.json with the prefix key. +Let an empty string if you don't want to prefix your API. The prefix must starts with a /, e.g. /api.

Policies and route process

Just because a request matches a route address doesn't necessarily mean it will be passed to that +route's target directly. The request will need to pass through any configured policies first. +Policies are versatile tools for authorization and access control. They let you allow or deny +access to your controllers down to a fine level of granularity.

Policies are defined in the policies directory of every of your APIs.

Each policy file should contain a single function. When it comes down to it, policies are +really just functions which run before your controllers. You can chain as many of them +together as you like. In fact they're designed to be used this way. Ideally, each middleware +function should really check just one thing.

For example to access DELETE /post/:id, the request will go through the isAdmin policy first. +If the policy allows the request, then the delete action from the Post controller is executed.

  {
+    "routes": {
+      "DELETE /post/:id": {
+        "controller": "Post",
+        "action": "delete",
+        "policies": ["isAdmin"]
+      }
+    }
+  }
+

Do not forget to yield next when you need to move on.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/services.html b/docs/.vuepress/dist/1.x.x/services.html new file mode 100644 index 0000000000..6b069bfdb4 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/services.html @@ -0,0 +1,66 @@ + + + + + + Services | Strapi Docs + + + + + + + +

Services

Services can be thought of as libraries which contain functions that you might want to use +in many places of your application. For example, you might have an Email service which +wraps some default email message boilerplate code that you would want to use in many parts +of your application.

Simply create a JavaScript file containing a function or an object into your +./api/<apiName>/services directory.

For example, you could have an Email service like this:

const nodemailer = require('nodemailer');
+
+module.exports = {
+  sendEmail: function (from, to, subject, text) {
+
+    // Create reusable transporter object using SMTP transport
+    const transporter = nodemailer.createTransport({
+      service: 'Gmail',
+      auth: {
+        user: 'gmail.user@gmail.com',
+        pass: 'userpass'
+      }
+    });
+
+    // Setup e-mail data
+    const options = {
+      from: from,
+      to: to,
+      subject: subject,
+      text: text
+    };
+
+    // Send mail
+    transporter.sendMail(options, function(error, info){
+      if (error) {
+        console.log(error);
+        return false;
+      }
+
+      console.log('Message sent: ' + info.response);
+    });
+  }
+};
+
+ + + diff --git a/docs/.vuepress/dist/1.x.x/sessions.html b/docs/.vuepress/dist/1.x.x/sessions.html new file mode 100644 index 0000000000..221f0b7ca0 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/sessions.html @@ -0,0 +1,58 @@ + + + + + + Sessions | Strapi Docs + + + + + + + +

Sessions

Since HTTP driven applications are stateless, sessions provide a way to store information +about the user across requests.

Strapi provides "guest" sessions, meaning any visitor will have a session, +authenticated or not. If a session is new a Set-Cookie will be produced regardless +of populating the session.

Strapi only supports cookie sessions, for now.

The current session is available in this.session inside a controller action.

module.exports = {
+  find: function *() {
+
+    // Limit request rate to 100
+    if (this.session.views < 100) {
+      try {
+        this.session.views++;
+        this.body = yield Post.find(this.params);
+      } catch (error) {
+        this.body = error;
+      }
+    } else {
+      this.body = 'You have reached your request rate limit';
+    }
+  }
+};  
+

To destroy an active session, simply set it to null:

module.exports = {
+  logout: function () {
+    try {
+      this.session = null;
+      this.redirect('./');
+    } catch (error) {
+      this.body = error;
+    }
+  }
+};  
+
+ + + diff --git a/docs/.vuepress/dist/1.x.x/testing.html b/docs/.vuepress/dist/1.x.x/testing.html new file mode 100644 index 0000000000..36b7a58066 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/testing.html @@ -0,0 +1,85 @@ + + + + + + Testing | Strapi Docs + + + + + + + +

Testing

Strapi's test suite is written using mocha and although +Strapi doesn't impose any testing framework for your apps, in this example we +will setup tests using the mocha framework.

Setup

Before writing tests, you should setup a basic directory structure, like this:

./strapiApp
+├── api/
+├── ...
+├── test/
+│  ├── integration/
+│  │  ├── controllers/
+│  │  │  └── my_endpoint.test.js
+│  │  ├── models/
+│  │  │  └── my_model.test.js
+│  │  └── ...
+|  ├── ...
+│  ├── bootstrap.js
+

Boostrap

We are going to setup a bootstrap.js with before and after hooks to +perform any actions before and after our tests.
+In this example, the app server is started before running any tests an stop +the server after tests are completed.

./test/bootstrap.js

const strapi = require('strapi');
+
+before(function (done) {
+  strapi.start({}, function(err) {
+    if (err) {
+      return done(err);
+    }
+
+    done(err, strapi);
+  });
+});
+
+after(function (done) {
+  strapi.stop(done());
+});
+

Writing tests

Once you have setup your directory structure, you can start writing your tests. +In this example we use co-supertest, +a co and Supertest integration library. +Supertest provides several useful +methods for testing HTTP requests.
+If you want to test an api endpoint, you can do it like this:

./test/integration/controllers/my_endpoint.js

const request = require('co-supertest');
+
+describe('MyEndpoint Controller Integration', function() {
+  describe('GET /my_endpoint', function() {
+    it('should return 200 status code', function *() {
+      yield request(strapi.config.url)
+        .get('/my_endpoint')
+        .expect(200)
+        .expect('Content-Type', /json/)
+        .end();
+    });
+  });
+});
+

Running tests

In order to run tests you can use npm test. In your package.json, in the +scripts section, add this:

./package.json

"scripts": {
+  "test": "mocha --require co-mocha test/bootstrap.js test/**/*.test.js"
+}
+

Remember to run test/bootstrap.js before any other tests and, if you want, +use the --require option to pass any required dependencies you need available +in your tests.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/upload.html b/docs/.vuepress/dist/1.x.x/upload.html new file mode 100644 index 0000000000..af3051e78f --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/upload.html @@ -0,0 +1,77 @@ + + + + + + Upload | Strapi Docs + + + + + + + +

Upload

Strapi contains a set of tools to upload files.

Upload config

To change the upload config, edit the ./api/upload/config/settings.json file.

For the config bellow, please use refer to the [co-busboy](https://github.com/cojs/busboy) node module documentation.

{
+  "upload": {
+    "folder": "public/upload",
+    "acceptedExtensions": [
+      "*"
+    ],
+    "headers": {},
+    "highWaterMark": "",
+    "fileHwm": "",
+    "defCharset": "",
+    "preservePath": "",
+    "limits": {
+      "fieldNameSize": "",
+      "fieldSize": "",
+      "fields": "",
+      "fileSize": "",
+      "files": "",
+      "parts": "",
+      "headerPairs": ""
+    }
+  }
+}
+

Upload service

The upload service allows you to easily upload files from anywhere in your application.

Usage as a promise (yieldable) :

yield strapi.api.upload.services.upload.upload(part, this);
+

Upload API

The upload API is a simple API which can be used from your client +(front-end, mobile...) application to upload files.

Route used to upload files:

POST /upload
+

To use this route, you have to submit a HTML form with multipart/* enctype +(or fake it if you are using a web front-end framework like AngularJS).

Response payload:

[
+  {
+    "readable": true,
+    "domain": null,
+    "truncated": false,
+    "fieldname": "file",
+    "filename": "1445421755771-image.jpg",
+    "encoding": "7bit",
+    "transferEncoding": "7bit",
+    "mime": "image/jpeg",
+    "mimeType": "image/jpeg",
+    "originalFilenameFormatted": "image.jpg",
+    "originalFilename": "image.jpg",
+    "template": "default",
+    "lang": "en",
+    "createdAt": "2015-10-21T10:02:35.776Z",
+    "updatedAt": "2015-10-21T10:02:35.776Z",
+    "id": 2
+  }
+]
+

Upload model

Each uploaded file description is registered in the database. So you can retrieve +them whenever you want. However, you can disable this option by overriding the +upload service logic.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/users.html b/docs/.vuepress/dist/1.x.x/users.html new file mode 100644 index 0000000000..684b597a56 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/users.html @@ -0,0 +1,66 @@ + + + + + + Users | Strapi Docs + + + + + + + +

Users

Most of the web applications require a user management system: registration, login, +reset password, etc.

To avoid you to reinvent the wheel, Strapi embedded a full featured user management +system powered by Grant and JSON Web Token (JWT).

Local Registration

Route used to register a user to your application: POST /auth/local/register.

Request payload:

{
+  "username": "John DOE",
+  "email": "contact@company.com",
+  "password": "123456"
+}
+

Response payload:

{
+  "user": {},
+  "jwt": ""
+}
+

Local Login

Route used to login a user to your application: POST /auth/local.

Request payload:

{
+  "identifier": "contact@company.com",
+  "password": "123456"
+}
+

Response payload:

{
+  "user": {},
+  "jwt": ""
+}
+

Authentication

JWT does not use session. Once you get the token, it has to be stored in front (for +example in the localstorage), and sent within each request. The token can be sent:

  • in the header (Bearer)
  • in the body (token field)
  • in the querystring (token field)

Providers

Thanks to Grant and Purest, you can easily use OAuth and OAuth2 +providers to enable authentication in your application. By default, +Strapi comes with four providers:

  • Facebook
  • Google
  • Github
  • Linkedin2 (Oauth2 Provider for Linkedin)

To use the providers authentication, set your credentials in +./api/user/config/environments/development/grant.json.

Redirect your user to: GET /connect/:provider.

After his approval, he will be redirected to /auth/:provider/callback. The jwt and user will be available in the querystring.

Response payload:

{
+  "user": {},
+  "jwt": ""
+}
+

Custom providers

Strapi comes with 5 providers. If you want to add another one, it can be easily done thanks to Purest, by adding it in the Grant service.

Forgot password

Send an email to the user with an activation code: POST /auth/forgot-password.

Request payload:

{
+  "email": "contact@company.com"
+}
+

Change password

Route used to update the password of a user after he asked for a +"forgot-password" email: POST /auth/change-password.

Request payload:

{
+  "code": "",
+  "password": "123456",
+  "passwordConfirmation": "123456"
+}
+

Response payload:

{
+  "user": {},
+  "jwt": ""
+}
+

Accessing user from requests.

If you want to access attributes of the logged in user, you can use this.user inside of your controller action.

+ + + diff --git a/docs/.vuepress/dist/1.x.x/views.html b/docs/.vuepress/dist/1.x.x/views.html new file mode 100644 index 0000000000..d0a4eae876 --- /dev/null +++ b/docs/.vuepress/dist/1.x.x/views.html @@ -0,0 +1,67 @@ + + + + + + Views | Strapi Docs + + + + + + + +

Views

In Strapi, views are markup templates that are compiled on the server into HTML pages. +In most cases, views are used as the response to an incoming HTTP request.

By default, Strapi doesn't use views. The philosophy of the framework is to +separate the reusable backend application logic from the frontend.

If you want to activate views, set the views in ./config/general.json.

For example, if you want to use lodash for .html files and use it by default, +you may set up your views object as below:

{
+  "views": {
+    "map": {
+      "html": "lodash"
+    },
+    "default": "html"
+  }
+}
+

Views are defined in your application's ./views directory.

Render a view

Simply use this.render instead of this.body to render a view.

You don't need to specify the view extension if you use the default one sets in config.

Using the config we wrote above with lodash for .html files and use the html +extension by default, this example will render ./views/user.html with +Lodash as template engine.

yield this.render('user', {
+  firstname: 'John',
+  lastname: 'Doe'
+});
+
<html>
+  <head>...</head>
+  <body>
+    <p>Firstname: <% firstname %><br>Lastname: <% lastname %></p>
+  </body>
+</html>
+

Here is the same example with the jade extension, not used by default:

yield this.render('user.jade', {
+  firstname: 'John',
+  lastname: 'Doe'
+});
+

Supported template engines

To use a view engine, you should use npm to install it in your project and +set the map object in strapi.config.views. For example, if you want to use +swig for .html files and hogan for .md files, you may configure the +map object as below:

{
+  "views": {
+    "map": {
+      "html": "swig",
+      "md": "hogan"
+    }
+  }
+}
+

Strapi supports all of those view engines:

+ + + diff --git a/docs/.vuepress/dist/3.x.x/SUMMARY.html b/docs/.vuepress/dist/3.x.x/SUMMARY.html new file mode 100644 index 0000000000..43e872beea --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/SUMMARY.html @@ -0,0 +1,23 @@ + + + + + + Summary | Strapi Docs + + + + + + + +
+ + + diff --git a/docs/.vuepress/dist/3.x.x/advanced/customize-admin.html b/docs/.vuepress/dist/3.x.x/advanced/customize-admin.html new file mode 100644 index 0000000000..ac05843ee4 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/advanced/customize-admin.html @@ -0,0 +1,164 @@ + + + + + + Admin panel | Strapi Docs + + + + + + + +

Admin panel

One of Strapi's main feature is its fully extendable and customizable admin panel. This section explains how the admin panel section is structured and how to customize it.

See the Contributing Guide for informations on how to develop the Strapi's admin interface.

Files structure

The entire logic of the admin panel is located in a single folder named ./admin/. This directory contains the following structure:

/admin
+└─── admin
+|   └─── build // Webpack generated build of the front-end
+|   └─── src // Front-end directory
+|        └─── app.js // Entry point of the React application
+|        └─── assets // Assets directory containing images,...
+|        └─── components // Admin's React components directory
+|        └─── containers // Admin's high level components directory
+|        └─── favicon.ico // Favicon displayed in web browser
+|        └─── i18n.js // Internalization logic
+|        └─── index.html // Basic html file in which are injected necessary styles and scripts
+|        └─── reducers.js // Redux reducers logic
+|        └─── store.js // Redux store logic
+|        └─── styles // Directory containing the global styles. Specific styles are defined at the component level
+|        └─── translations  // Directory containing text messages for each supported languages
+└─── config
+|    └─── routes.json // Admin's API routes
+|    └─── layout.json // Admin's specific settings
+└─── controllers // Admin's API controllers
+└─── services // Admin's API services
+└─── packages.json // Admin's npm dependencies
+

Customization

The administration panel can be customised according to your needs, so you can make it reflects your identity: colors, fonts, logo, etc.

Change access URL

By default, the administration panel is exposed via http://localhost:1337/admin. However, for security reasons, you can easily update this path.

Path — ./config/environment/**/server.json.

{
+  "host": "localhost",
+  "port": 1337,
+  "autoReload": {
+    "enabled": true
+  },
+  "cron": {
+    "enabled": false
+  },
+  "admin": {
+    "path": "/dashboard"
+  }
+}
+

The panel will be available through http://localhost:1337/dashboard with the configurations above.

Development mode

Note that to modify the administration panel, your project needs to be created with using the dev flag, an example of such would be: strapi new strapi --dev.

#1 — Install its own dependencies

Run npm install from the ./admin folder.

#2 — Launch the development server

Run npm start from the ./admin folder. That's all.

#3 — Go to the browser

You should be able to see the admin at http://localhost:4000/admin.

In development, all the plugins of your app are mounted in the same build as the administration panel.

Colors

Admin's styles use PostCSS, and more precisely PostCSS-SCSS. In this way, colors are stored in variables. The values of these variables can be easily changed in files located in ./admin/admin/src/styles/variables/.

The changes should be automatically visible.

Fonts

Fonts can also be overridden:

  • Add the fonts files you need in ./admin/admin/src/styles/fonts.
  • Import them from ./admin/admin/src/styles/base/fonts.scss.
  • Use them by replacing the variables' values in ./admin/admin/src/styles/variables/variables.bootstrap.scss.

To change the top-left displayed admin panel's logo, replace the image located at ./admin/admin/src/assets/images/logo-strapi.png.

make sure the size of your image is the same as the existing one (434px x 120px).


Build

To build the administration, run the following command from the root directory of your project.

npm run setup
+

This will replace the folder's content located at ./admin/admin/build. Visit http://localhost:1337/admin/ to make sure your updates have been taken in account.

After you have built the admininistration you can now create a new project to develop your API with the changes implemented.

You should now create a project without --dev


Deployment

The administration is nothing more than a React front-end application calling an API. The front-end and the back-end are independent and can be deployed on different servers which brings us to different scenarios:

  1. Deploy the entire project on the same server.
  2. Deploy the administration panel on another server (AWS S3, Azure, etc) than the API.
  3. Deploy the administration panel and the plugins on another server than the API.

Let's dive into the build configurations for each case.

Deploy the entire project on the same server.

You don't need to touch anything in your configuration file. This is the default behaviour and the build configurations will be automatically set. The server will start on the defined port and the administration panel will be accessible through http://yourdomain.com:1337/dashboard.

You might want to change the path to access to the administration panel. Here the required configurations to change the path:

Path — ./config/environment/**/server.json.

{
+  "host": "localhost",
+  "port": 1337,
+  "autoReload": {
+    "enabled": false
+  },
+  "cron": {
+    "enabled": false
+  },
+  "admin": {
+    "path": "/dashboard" // We change the path to access to the admin (highly recommended for security reasons).
+  }
+}
+

You have to rebuild the administration panel to make this work. Please follow the step #2 of the deployment guide.

Deploy the administration panel on another server (AWS S3, Azure, etc) than the API.

It's very common to deploy the front-end and the back-end on different servers. Here the required configurations to handle this case:

Path — ./config/environment/**/server.json.

{
+  "host": "localhost",
+  "port": 1337,
+  "autoReload": {
+    "enabled": false
+  },
+  "cron": {
+    "enabled": false
+  },
+  "admin": {
+    "path": "/dashboard",
+    "build": {
+      "host": "/",  // Note: The administration will be accessible from the root of the domain (ex: http//yourfrontend.com/)
+      "backend": "http://yourbackend.com",
+      "plugins": {
+        "source": "backend" // What does it means? The script tags in the index.html will use the backend value to load the plugins (ex: http://yourbackend.com/dashboard/content-manager/main.js).
+      }
+    }
+  }
+}
+

The administration URL will be http://yourfrontend.com and every request from the panel will hit the backend at http://yourbackend.com. The plugins will be injected through the origin (means the API itself). In other words, the plugins URLs will be http://yourbackend.com/dashboard/content-manager/main.js.

How it is possible? The API (the Strapi server) owns the plugin and these plugins are exposed through http://yourbackend.com/admin/**/main.js

The DOM should look like this:

Path — ./admin/admin/build/index.html.

<html>
+  <head></head>
+  <body>
+    <div id="app"></div>
+    <script type="text/javascript" src="/vendor.dll.js"></script>
+    <script type="text/javascript" src="/main.js"></script>
+    <script src="http://yourbackend.com/dashboard/content-manager/main.js"></script>
+    <script src="http://yourbackend.com/dashboard/settings-manager/main.js"></script>
+    <script src="http://yourbackend.com/dashboard/content-type-builder/main.js"></script>
+  </body>
+</html>
+

The plugins are injected using the ./admin/admin/build/config/plugins.json. To see the plugins URLs in the index.html, you need to launch the administration panel in the browser.

Deploy the administration panel and the plugins on another server than the API

In this case, we suppose that you decided to put your administration and the plugins on the same server but on a different server as the API.

Path — ./config/environment/**/server.json.

{
+  "host": "localhost",
+  "port": 1337,
+  "autoReload": {
+    "enabled": false
+  },
+  "cron": {
+    "enabled": false
+  },
+  "admin": {
+    "build": {
+      "host": "http://yourfrontend.com/dashboard", // Note: The custom path has moved directly in the host URL.
+      "backend": "http://yourbackend.com",
+      "plugins": {
+        "source":  "host", // What does it means? The script tags in the index.html will use the host value to load the plugins (ex: http://yourfrontend.com/dashboard/plugins/content-manager/main.js).
+        "folder": "/plugins"
+      }
+    }
+  }
+}
+

The administration URL will be http://yourfrontend.com/dashboard and every request from the panel will hit the backend at http://yourbackend.com. The plugins will be injected through the host. It means that the plugins URLs will use the host URL as the origin. So the plugins URLs will be http://yourfrontend.com/dashboard/plugins/content-manager/main.js.

We also added a folder setting to separate the plugins from the administration build. In your server, the files structure should look like this:

- src/
+  - 0bd35bad03d09ca61ac6cce225112e36.svg
+  - 1d51d8767683a24635702f720cda4e26.svg
+  - af3aefd0529349e40e4817c87c620836.png
+  - config/
+    - plugins.json
+  - main.js
+  - main.js.map
+  - plugins/
+    - content-type-builder/
+      - 0bd35bad03d09ca61ac6cce225112e36.svg
+      - 1d51d8767683a24635702f720cda4e26.svg
+      - af3aefd0529349e40e4817c87c620836.png
+      - main.js
+      - main.js.map
+    - content-manager/
+      - ...
+      - main.js
+      - main.js.map
+    - settings-manager/
+      - ...
+      - main.js
+      - main.js.map
+  - vendor.dll.js
+  - vendor.dll.js.map
+

The generated index.html will look like this:

Path — ./admin/admin/build/index.html.

<html>
+  <head></head>
+  <body>
+    <div id="app"></div>
+    <script type="text/javascript" src="/dashboard/vendor.dll.js"></script>
+    <script type="text/javascript" src="/dashboard/main.js"></script>
+    <script src="/dashboard/plugins/content-manager/main.js"></script>
+    <script src="/dashboard/plugins/settings-manager/main.js"></script>
+    <script src="/dashboard/plugins/content-type-builder/main.js"></script>
+  </body>
+</html>
+

The plugins are injected using the ./admin/admin/build/config/plugins.json. To see the plugins URLs in the index.html, you need to launch the administration panel in the browser.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/advanced/hooks.html b/docs/.vuepress/dist/3.x.x/advanced/hooks.html new file mode 100644 index 0000000000..a996c7aff1 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/advanced/hooks.html @@ -0,0 +1,110 @@ + + + + + + Hooks | Strapi Docs + + + + + + + +

Hooks

The hooks are modules that add functionality to the core. They are loaded during the server boot. For example, if your project needs to work with a SQL database, your will have to add the hook strapi-hook-bookshelf to be able to connect your app with your database.

Path — ./hooks/documentation/lib/index.js.

const fs = require('fs');
+const path = require('path');
+
+module.exports = strapi => {
+  const hook = {
+
+    /**
+     * Default options
+     */
+
+    defaults: {
+      documentation: {
+        path: '/public/documentation'
+      }
+    },
+
+    /**
+     * Initialize the hook
+     */
+
+    initialize: cb => {
+      try {
+        // Check if documentation folder exist.
+        fs.accessSync(path.resolve(process.cwd(), this.defaults.documentation.path));
+      } catch (e) {
+        // Otherwise, create the folder.
+        fs.mkdirSync(path.resolve(process.cwd(), this.defaults.documentation.path));
+      }
+
+      // This function doesn't really exist,
+      // it's just an example to tell you that you
+      // run your business logic and when it's done
+      // you just need to call the callback `cb`
+      generateDocumentation(path.resolve(process.cwd(), this.defaults.documentation.path), function(err) {
+        if (err) {
+          // Error: it will display the error to the user
+          // and the hook won't be loaded.
+          return cb(err);
+        }
+
+        // Success.
+        cb();
+      });
+    }
+  };
+
+  return hook;
+};
+
  • defaults (object): Contains the defaults configurations. This object is merged to strapi.config.hook.settings.**.
  • initialize (function): Called during the server boot. The callback cb needs to be called. Otherwise, the hook won't be loaded.

Every folder that follows this name pattern strapi-* in your ./node_modules folder will be loaded as a hook. The hooks are accessible through the strapi.hook variable.

Structure

A hook needs to follow the structure below:

/hook
+└─── lib
+     - index.js
+- LICENSE.md
+- package.json
+- README.md
+

The index.js is the entry point to your hook. It should look like the example above.

Dependencies

It happens that a hook has a dependency to another one. For example, the strapi-hook-bookshelf has a dependency to strapi-hook-knex. Without it, the strapi-hook-bookshelf can't work correctly. It also means that the strapi-hook-knex hook has to be loaded before.

To handle this case, you need to update the package.json at the root of your hook.

{
+  "name": "strapi-hook-bookshelf",
+  "version": "x.x.x",
+  "description": "Bookshelf hook for the Strapi framework",
+  "dependencies": {
+    ...
+  },
+  "strapi": {
+    "dependencies": [
+      "strapi-hook-knex"
+    ]
+  }
+}
+

Custom hooks

The framework allows to load hooks from the project directly without having to install them from npm. It's great way to take advantage of the features of the hooks system for code that doesn't need to be shared between apps. To achieve this, you have to create a ./hooks folder at the root of your project and put the hooks into it.

/project
+└─── admin
+└─── api
+└─── config
+└─── hooks
+│   └─── strapi-documentation
+│        - index.js
+│   └─── strapi-server-side-rendering
+│        - index.js
+└─── plugins
+└─── public
+- favicon.ico
+- package.json
+- server.js
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/advanced/logging.html b/docs/.vuepress/dist/3.x.x/advanced/logging.html new file mode 100644 index 0000000000..3c6e126eb2 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/advanced/logging.html @@ -0,0 +1,66 @@ + + + + + + Logging | Strapi Docs + + + + + + + +

Logging

Strapi relies on an extremely fast Node.js logger called Pino that includes a shell utility to pretty-print its log files. It provides great performances and doesn't slow down your app. The logger is accessible through the global variable strapi.log or the request's context ctx.log if enabled.

// Folder.js controller
+const fs = require('fs');
+const path = require('path');
+
+module.exports = {
+
+  /**
+   * Retrieve app's folders.
+   *
+   * @return {Object|Array}
+   */
+
+  findFolders: async (ctx) => {
+    try {
+      const folders = fs.readdirSync(path.resolve(process.cwd()));
+
+      strapi.log.info(folders); // ctx.log.info(folders);
+
+      ctx.send(folders);
+    } catch (error) {
+      strapi.log.fatal(error); // ctx.log.fatal(error);
+      ctx.badImplementation(error.message);
+    }
+  }
+}
+

Global logger configuration

The global logger is configured by environment variables.

STRAPI_LOG_LEVEL: Can be 'fatal', 'error', 'warn', 'info', 'debug' or 'trace'. +STRAPI_LOG_TIMESTAMP: Can be true/false +STRAPI_LOG_PRETTY_PRINT: Can be true/false +STRAPI_LOG_FORCE_COLOR: Can be true/false

Request logging middleware

To configure the request-logger middleware, you have to edit the following file ./config/environments/*/request.json.

{
+  ...
+  "logger": {
+    "level": "debug",
+    "exposeInContext": true,
+    "requests": true
+  },
+  ...
+}
+
  • level: defines the desired logging level (fatal, error, warn, info, debug, trace).
  • exposeInContext: allows access to the logger through the context.
  • requests: incoming HTTP requests will be logged.

To find more details about the logger API, please refer to the Pino documentation.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/advanced/middlewares.html b/docs/.vuepress/dist/3.x.x/advanced/middlewares.html new file mode 100644 index 0000000000..8a78b828e6 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/advanced/middlewares.html @@ -0,0 +1,142 @@ + + + + + + Middlewares | Strapi Docs + + + + + + + +

Middlewares

The middlewares are functions which are composed and executed in a stack-like manner upon request. If you are not familiar with the middleware stack in Koa, we highly recommend you to read the Koa's documentation introduction.

Enable the middleware in environments settings

Path — [config/environments/**]

  "urlReader": {
+      "enabled": true
+  }
+

Path — strapi/lib/middlewares/responseTime/index.js.

module.exports = strapi => {
+  return {
+    initialize: function(cb) {
+      strapi.app.use(async (ctx, next) => {
+        const start = Date.now();
+
+        await next();
+
+        const delta = Math.ceil(Date.now() - start);
+
+        // Set X-Response-Time header
+        ctx.set('X-Response-Time', delta + 'ms');
+      });
+
+      cb();
+    }
+  };
+};
+
  • initialize (function): Called during the server boot. The callback cb needs to be called. Otherwise, the middleware won't be loaded into the stack.

The core of Strapi embraces a small list of middlewares for performances, security and great error handling.

  • boom
  • cors
  • cron
  • csp
  • csrf
  • favicon
  • gzip
  • hsts
  • ip
  • language
  • logger
  • p3p
  • parser
  • public
  • responses
  • responseTime
  • router
  • session
  • xframe
  • xss

The following middlewares cannot be disabled: responses, router, logger and boom.

Structure

A middleware needs to follow the structure below:

/middleware
+└─── lib
+     - index.js
+- LICENSE.md
+- package.json
+- README.md
+

The index.js is the entry point to your middleware. It should look like the example above.

Custom middlewares

The framework allows the application to override the default middlewares and add new ones. You have to create a ./middlewares folder at the root of your project and put the middlewares into it.

/project
+└─── admin
+└─── api
+└─── config
+└─── middlewares
+│   └─── responseTime // It will override the core default responseTime middleware
+│        - index.js
+│   └─── views // It will be added into the stack of middleware
+│        - index.js
+└─── plugins
+└─── public
+- favicon.ico
+- package.json
+- server.js
+

Every middleware will be injected into the Koa stack. To manage the load order, please refer to the Middleware order section.

Load order

The middlewares are injected into the Koa stack asynchronously. Sometimes it happens that some of these middlewares need to be loaded in a specific order. To define a load order, we created a dedicated file located in ./config/middleware.json.

Path — ./config/middleware.json.

{
+  "timeout": 100,
+  "load": {
+    "before": [
+      "responseTime",
+      "logger",
+      "cors",
+      "responses"
+    ],
+    "order": [
+      "Define the middlewares' load order by putting their name in this array in the right order"
+    ],
+    "after": [
+      "parser",
+      "router"
+    ]
+  }
+}
+
  • timeout: defines the maximum allowed milliseconds to load a middleware.
  • load: +
    • before: array of middlewares that need to be loaded in the first place. The order of this array matters.
    • order: array of middlewares that need to be loaded in a specific order.
    • after: array of middlewares that need to be loaded at the end of the stack. The order of this array matters.

Examples

Load a middleware at the very first place

Path — ./config/middleware.json

  {
+    "timeout": 100,
+    "load": {
+      "before": [
+        "responseTime",
+        "logger"
+      ],
+      "order": [],
+      "after": []
+    }
+  }
+

The responseTime middleware will be loaded first. Immediately followed by the logger middleware. Then, the others middlewares will be loaded asynchronously.

Load a middleware after another one

Path — ./config/middleware.json.

  {
+    "timeout": 100,
+    "load": {
+      "before": [],
+      "order": [
+        "p3p",
+        "gzip"
+      ],
+      "after": []
+    }
+  }
+

The gzip middleware will be loaded after the p3p middleware. All the others will be loaded asynchronously.

Load a middleware at the very end

Path — ./config/middleware.json.

  {
+    "timeout": 100,
+    "load": {
+      "before": [
+        ...
+      ],
+      "order": [],
+      "after": [
+        "parser",
+        "router"
+      ]
+    }
+  }
+

The router middleware will be loaded at the very end. The parser middleware will be loaded after all the others and just before the router middleware.

Complete example

For this example, we are going to imagine that we have 10 middlewares to load:

  • cors
  • cron
  • favicon
  • gzip
  • logger
  • p3p
  • parser
  • response
  • responseTime
  • router

We assume that we set the ./config/middleware.json file like this:

  {
+    "timeout": 100,
+    "load": {
+      "before": [
+        "responseTime",
+        "logger",
+        "cors",
+      ],
+      "order": [
+        "p3p",
+        "gzip"
+      ],
+      "after": [
+        "parser",
+        "router"
+      ]
+    }
+  }
+

Here is the loader order:

  1. responseTime (loaded at the very first place)
  2. logger
  3. cors
  4. favicon (position order not guarantee)
  5. p3p
  6. cron
  7. gzip (loaded after the p3p middlewares)
  8. response (position order not guarantee)
  9. parser
  10. router (loaded at the very end place)
+ + + diff --git a/docs/.vuepress/dist/3.x.x/advanced/usage-tracking.html b/docs/.vuepress/dist/3.x.x/advanced/usage-tracking.html new file mode 100644 index 0000000000..5b6fd14906 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/advanced/usage-tracking.html @@ -0,0 +1,30 @@ + + + + + + Usage tracking | Strapi Docs + + + + + + + +

Usage tracking

In order to improve the product and understand how the community is using it, we are collecting non-sensitive data.

Collected data

Here is the list of the collected data and why we need them.

  • UUID Identify the app with a unique identifier.
  • Model names and attributes names Understand what kind of APIs are built with Strapi (content or product or service?)
  • Environment state (development, staging, production) Understand how the developers are using the different configurations? How many projects are started in production mode?
  • Node modules names Are developers integrating Strapi with Stripe? It means that we should develop a plugin to simplify the development process with Stripe. +Are developers using Strapi with strapi-hook-bookshelf or strapi-hook-mongoose? It helps us prioritize the issues.
  • OS Is the community using Windows, Linux or Mac? It helps us prioritize the issues.
  • Build configurations How many people are deploying the admin on another server?

We are not collecting sensitive data such as databases configurations, environment or custom variables. The data are encrypted and anonymised.

GDPR

The collected data are non-sensitive or personal data. We are compliant with the European recommendations (see our Privacy Policy).

Disable

You can disable the tracking by removing the uuid property in the package.json file at the root of your project.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/api-reference/reference.html b/docs/.vuepress/dist/3.x.x/api-reference/reference.html new file mode 100644 index 0000000000..f278044250 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/api-reference/reference.html @@ -0,0 +1,30 @@ + + + + + + API Reference | Strapi Docs + + + + + + + +

API Reference

strapi.admin

This object contains the controllers, models, services and configurations contained in the ./admin folder.

strapi.app

Returns the Koa instance.

strapi.bootstrap

Returns a Promise. When resolved, it means that the ./config/functions/bootstrap.js has been executed. Otherwise, it throws an error.

You can also access to the bootstrap function through strapi.config.functions.boostrap.

strapi.config

Returns an object that represents the configurations of the project. Every JavaScript or JSON file located in the ./config folder will be parsed into the strapi.config object.

strapi.controllers

Returns an object of the controllers wich is available in the project. Every JavaScript file located in the ./api/**/controllers folder will be parsed into the strapi.controllers object. Thanks to this object, you can access to every controller's actions everywhere in the project.

This object doesn't include the admin's controllers and plugin's controllers.

strapi.hook

Returns an object of the hooks available in the project. Every folder that follows this pattern strapi-* and located in the ./node_modules or /hooks folder will be mounted into the strapi.hook object.

strapi.koaMiddlewares

Returns an object of the Koa middlewares found in the ./node_modules folder of the project. This reference is very useful for the Strapi's core.

strapi.load

Returns a function that parses the configurations, hooks, middlewares and APIs of your app. It also loads the middlewares and hooks with the previously loaded configurations. This method could be useful to update references available through the strapi global variable without having to restart the server. However, without restarting the server, the new configurations will not be taken in account.

strapi.log

Returns the Logger (Pino) instance.

strapi.middleware

Returns an object of the middlewares available in the project. Every folder in the ./middlewares folder will be also mounted into the strapi.middleware object.

strapi.models

Returns an object of models available in the project. Every JavaScript or JSON file located in the ./api/**/models folders will be parsed into the strapi.models object. Also every strapi.models.** object is merged with the model's instance returned by the ORM (Mongoose, Bookshelf). It allows to call the ORM methods through the strapi.models.** object (ex: strapi.models.users.find()).

strapi.plugins

Returns an object of plugins available in the project. Each plugin object contains the associated controllers, models, services and configurations contained in the ./plugins/**/ folder.

strapi.query

Returns a function that will returns the available queries for this model. This feature is only available inside the plugin's files (controllers, services, custom functions). For more details, see the [ORM queries section](../plugin-development/backend-development.md#ORM queries).

strapi.reload

Returns a function that reloads the entire app (with downtime).

strapi.router

Returns the Router (Joi router) instance.

strapi.server

Returns the http.Server instance.

strapi.services

Returns an object of services available in the project. Every JavaScript file located in the ./api/**/services folders will be parsed into the strapi.services object.

strapi.start

Returns a function that loads the configurations, middlewares and hooks. Then, it executes the bootstrap file, freezes the global variable and listens the configured port.

strapi.stop

Returns a function that shuts down the server and destroys the current connections.

strapi.utils

Returns a set of utils.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/cli/CLI.html b/docs/.vuepress/dist/3.x.x/cli/CLI.html new file mode 100644 index 0000000000..2a067d6180 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/cli/CLI.html @@ -0,0 +1,79 @@ + + + + + + Command Line Interface (CLI) | Strapi Docs + + + + + + + +

Command Line Interface (CLI)

Strapi comes with a full featured Command Line Interface (CLI) which lets you scaffold and manage your project in seconds.


strapi new

Create a new project

strapi new <name>
+
+options: [--dev|--dbclient=<dbclient> --dbhost=<dbhost> --dbport=<dbport> --dbname=<dbname> --dbusername=<dbusername> --dbpassword=<dbpassword> --dbssl=<dbssl> --dbauth=<dbauth>]
+
  • strapi new <name>
    +Generates a new project called <name> and installs the default plugins through the npm registry.

  • strapi new <name> --dev
    +Generates a new project called <name> and creates symlinks for the ./admin folder and each plugin inside the ./plugin folder. It means that the Strapi's development workflow has been set up on the machine earlier.

  • strapi new <name> --dbclient=<dbclient> --dbhost=<dbhost> --dbport=<dbport> --dbname=<dbname> --dbusername=<dbusername> --dbpassword=<dbpassword> --dbssl=<dbssl> --dbauth=<dbauth>
    +Generates a new project called <name> and skip the interactive database configuration and initilize with these options. <dbclient> can be mongo, postgres, mysql, sqlite3 or redis. <dbssl> and <dbauth> are optional.

    See the CONTRIBUTING guide for more details.


strapi generate:api

Scaffold a complete API with its configurations, controller, model and service.

strapi generate:api <name> [<attribute:type>]
+
+options: [--tpl <name>|--plugin <name>]
+
  • strapi generate:api <name>
    +Generates an API called <name> in the ./api folder at the root of your project.

  • strapi generate:api <name> <attribute:type>
    +Generates an API called <name> in the ./api folder at the root of your project. The model will already contain an attribute called <attribute> with the type property set to <type>.

    Example: strapi generate:api product name:string description:text price:integer

  • strapi generate:api <name> --plugin <plugin>
    +Generates an API called <name> in the ./plugins/<plugin> folder.

    Example: strapi generate:api product --plugin content-manager

  • strapi generate:api <name> --tpl <template>
    +Generates an API called <name> in the ./api folder which works with the given <template>. By default, the generated APIs are based on Mongoose.

    Example: strapi generate:api product --tpl bookshelf

The first letter of the filename will be uppercased.

strapi generate:controller

Create a new controller

strapi generate:controller <name>
+
+options: [--api <name>|--plugin <name>]
+
  • strapi generate:controller <name>
    +Generates an empty controller called <name> in the ./api/<name>/controllers folder.

    Example: strapi generate:controller category will create the controller at ./api/category/controllers/Category.js.

  • strapi generate:controller <name> --api <api>
    +Generates an empty controller called <name> in the ./api/<api>/controllers folder.

    Example: strapi generate:controller category --api product will create the controller at ./api/product/controllers/Category.js.

  • strapi generate:controller <name> --plugin <plugin>
    +Generates an empty controller called <name> in the ./plugins/<plugin>/controllers folder.

The first letter of the filename will be uppercased.

strapi generate:model

Create a new model

strapi generate:model <name> [<attribute:type>]
+
+options: [--api <name>|--plugin <name>]
+
  • strapi generate:model <name>
    +Generates an empty model called <name> in the ./api/<name>/models folder. It will create two files. +The first one will be <name>.js which contains your lifecycle callbacks and another <name>.settings.json that will list your attributes and options.

    Example: strapi generate:model category will create these two files ./api/category/models/Category.js and ./api/category/models/Category.settings.json.

  • strapi generate:model <name> <attribute:type>
    +Generates an empty model called <name> in the ./api/<name>/models folder. The file <name>.settings.json will already contain a list of attribute with their associated <type>.

    Example: strapi generate:model category name:string description:text will create these two files ./api/category/models/Category.js and ./api/category/models/Category.settings.json. This last file will contain two attributes name with the type string and description with type text.

  • strapi generate:model <name> --api <api>
    +Generates an empty model called <name> in the ./api/<api>/models folder.

    Example: strapi generate:model category --api product will create these two files:

    • ./api/product/models/Category.js
    • ./api/product/models/Category.settings.json.
  • strapi generate:model <name> --plugin <plugin>
    +Generates an empty model called <name> in the ./plugins/<plugin>/models folder.

The first letter of the filename will be uppercased.

strapi generate:service

Create a new service

strapi generate:service <name>
+
+options: [--api <name>|--plugin <name>]
+
  • strapi generate:service <name>
    +Generates an empty service called <name> in the ./api/<name>/services folder.

    Example: strapi generate:service category will create the service at ./api/category/services/Category.js.

  • strapi generate:service <name> --api <api>
    +Generates an empty service called <name> in the ./api/<api>/services folder.

    Example: strapi generate:service category --api product will create the service at ./api/product/services/Category.js.

  • strapi generate:service <name> --plugin <plugin>
    +Generates an empty service called <name> in the ./plugins/<plugin>/services folder.

The first letter of the filename will be uppercased.

strapi generate:policy

Create a new policy

strapi generate:policy <name>
+
+options: [--api <name>|--plugin <name>]
+
  • strapi generate:policy <name>
    +Generates an empty policy called <name> in the ./config/policies folder.

    Example: strapi generate:policy isAuthenticated will create the policy at ./config/policies/isAuthenticated.js.

  • strapi generate:policy <name> --api <api>
    +Generates an empty policy called <name> in the ./api/<api>/config/policies folder. This policy will be scoped and only accessible by the <api> routes.

    Example: strapi generate:policy isAuthenticated --api product will create the policy at ./api/product/config/policies/isAuthenticated.js.

  • strapi generate:policy <name> --plugin <plugin>
    +Generates an empty policy called <name> in the ./plugins/<plugin>/config/policies folder. This policy will be scoped and accessible only by the <plugin> routes.

strapi generate:plugin

Create a new plugin skeleton.

strapi generate:plugin <name>
+
  • strapi generate:plugin <name>
    +Generates an empty plugin called <name> in the ./plugins folder.

    Example: strapi generate:plugin user will create the plugin at ./plugins/user.

Please refer to the plugin develoment documentation to know more.


strapi install

Install a plugin in the project.

strapi install <name>
+
+options: [--dev]
+
  • strapi install <name>
    +Installs a plugin called <name> in the ./plugins folder.

    Example: strapi install content-type-builder will install the plugin at ./plugins/content-type-builder.

  • strapi install <name> --dev
    +It will create a symlink from the local Strapi repository plugin folder called <name> in the ./plugins folder.

    Example: strapi install content-type-builder --dev will create a symlink from /path/to/the/repository/packages/strapi-plugin-content-type-builder to ./plugins/content-type-builder.

Checkout the CONTRIBUTING guide for more details about the local Strapi development workflow.

WARNING

You have to restart the server to load the plugin into your project.

Please refer to the plugins documentation to know more.


strapi uninstall

Uninstall a plugin from the project.

strapi uninstall <name>
+
  • strapi uninstall <name>
    +Uninstalls a plugin called <name> in the ./plugins folder.

    Example: strapi uninstall content-type-builder will remove the folder at ./plugins/content-type-builder.

Please refer to the plugins documentation to know more.


strapi version

Print the current globally installed Strapi version.

strapi version
+

strapi help

List CLI commands.

strapi help
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/concepts/concepts.html b/docs/.vuepress/dist/3.x.x/concepts/concepts.html new file mode 100644 index 0000000000..f68bd1b90b --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/concepts/concepts.html @@ -0,0 +1,70 @@ + + + + + + Concepts | Strapi Docs + + + + + + + +

Concepts


Files structure

By default, your project's structure will look like this:

  • /admin: contains the vast majority of the admin's front-end and back-end logic.
  • /api: contains the business logic of your project will be in this folder split in sub-folder per API. +
  • /node_modules: contains the npm's packages used by the project.
  • /config
    • /environments: contains the project's configurations per environment. +
      • /**
        • /development
          • custom.json: contains the custom configurations for this environment.
          • database.json: contains the database connections for this environment.
          • request.json: contains the request settings for this environment.
          • response.json: contains the response settings for this environment.
          • server.json: contains the server settings for this environment.
        • /production
        • /staging
    • /functions: contains lifecycle or generic functions of the project.
    • /locales: contains the translation files used by the built-in i18n feature.
    • application.json: contains the general configurations of the project.
    • custom.json: contains the custom configurations of the project.
    • hook.json: contains the hook settings of the project.
    • language.json: contains the language settings of the project.
    • middleware.json: contains the middleware settings of the project.
  • /hooks: contains the custom hooks of the project.
  • /middlewares: contains the custom middlewares of the project.
  • /plugins: contains the installed plugins in the project.
  • /public: contains the file accessible to the outside world.

Inside the /config folder, every folder will be parsed and injected into the global object strapi.config. Let's say, you added a folder named credentials with two files stripe.json and paypal.json into it. The content of these files will be accessible through strapi.config.credentials.stripe and strapi.config.credentials.paypal.


Controllers

Controllers are JavaScript files which contain a set of methods called actions reached by the client according to the requested route. It means that every time a client requests the route, the action performs the business logic coded and sends back the response. They represent the C in the MVC pattern. In most cases, the controllers will contain the bulk of a project's business logic.

module.exports = {
+  // GET /hello
+  index: async (ctx) => {
+    ctx.send('Hello World!');
+  }
+};
+

In this example, any time a web browser is pointed to the /hello URL on your app, the page will display the text: Hello World!.

Where are the controllers defined?

The controllers are defined in each ./api/**/controllers/ folders. Every JavaScript file put in these folders will be loaded as a controller. They are also available through the strapi.controllers and strapi.api.**.controllers global variables. By convention, controllers' names should be Pascal-cased, so that every word in the file (include the first one) is capitalized User.js, LegalEntity.js.

Please refer to the controllers' guide for more informations.


Filters

Filters are a handy way to request data according to generic parameters. It makes filtering, sorting and paginating easy and reusable (eg. GET /user?_limit=30&name=John).

Please refer to the filters' guide for more informations.


Models

Models are a representation of the database's structure and lifecyle. They are split into two separate files. A JavaScript file that contains the lifecycle callbacks, and a JSON one that represents the data stored in the database and their format. The models also allow you to define the relationships between them.

Path — ./api/user/models/User.js.

module.exports = {
+  // Before saving a value.
+  // Fired before an `insert` or `update` query.
+  beforeSave: (next) => {
+    // Use `this` to get your current object
+    next();
+  },
+
+  // After saving a value.
+  // Fired after an `insert` or `update` query.
+  afterSave: (doc, next) => {
+    next();
+  },
+
+  // ... and more
+};
+

Path — ./api/user/models/User.settings.json.

{
+  "connection": "default",
+  "info": {
+    "name": "user",
+    "description": "This represents the User Model"
+  },
+  "attributes": {
+    "firstname": {
+      "type": "string"
+    },
+    "lastname": {
+      "type": "string"
+    }
+  }
+}
+

In this example, there is a User model which contains two attributes firstname and lastname.

Where are the models defined?

The models are defined in each ./api/**/models/ folder. Every JavaScript or JSON file in these folders will be loaded as a model. They are also available through the strapi.models and strapi.api.**.models global variables. Usable every where in the project, they contain the ORM model object that they are refer to. By convention, models' names should be written in lowercase.

Attributes

A model must contain a list of attributes, and each of these attributes must have a type.

Please refer to the models' guide for more informations about the attributes.

Relations

Many-to-many

Many-to-many associations allow to link an entry to many entry.

Please refer to the many-to-many guide

One-to-many

One-way relationships are useful to link an entry to another.

Please refer to the one-to-many guide

One-to-one

One-way relationships are useful to link an entry to another.

Please refer to the one-to-one guide.

One-way

One-way relationships are useful to link an entry to another. However, only one of the models can be queried with its populated items.

Please refer to the one-way guide.

Lifecycle callbacks

Lifecycle callbacks are functions triggered at specific moments of the queries.

Please refer to the lifecycle callbacks guide.


Internationalization and localization

Internationalization and localization (i18n) allows to adapt the project to different languages and serve the right content to the users. This feature is deeply integrated into the Strapi's core. It will detect the user language preference (locale) and translate the requested content using the translation files.

Please refer to the internationalization's guide.


Plugin

A plugin is like a fully independent sub-application. It has its own business logic with dedicated models, controllers, services, middlewares or hooks. It can also contain an UI integrated into the admin panel to use it easily. It allows to develop or plugin features in a project in a short time span.

Please refer to the plugins documentation for more informations.


Plugin styles

The admin panel uses Bootstrap to be styled on top of solid conventions and reusable CSS classes. It is also using PostCSS and PostCSS SCSS to keep the code maintainable.

Please refer to the plugin front-end development for detailed informations.


Policies

Policies are functions which have the ability to execute specific logic on each request before it reaches the controller's action. They are mostly used for securing business logic easily. +Each route of the project can be associated to an array of policies. For example, you can create a policy named isAdmin, which obviously checks that the request is sent by an admin user, and use it for critical routes.

Policies can be:

  • global: so they can be used within the entire project.
  • scoped: used by single API or plugin.

Where are the policies defined?

The API and plugins policies (scoped) are defined in each ./api/**/config/policies/ folders and plugins. They are respectively exposed through strapi.api.**.config.policies and strapi.plugins.**.config.policies. The global policies are defined at ./config/policies/ and accessible via strapi.config.policies.

Please refer to the policy guide

Global policies

Global policies are reusable through the entire app.

Please refer to the global policy guide

Scoped policies

A policy defined in an API or plugin is usable only from this API or plugin. You don't need any prefix to use it.

Please refer to the scoped policy guide.

Plugin policies

Plugin policies are usable from any app API.

Please refer to the plugin policy guide.

Public Assets

Public assets are static files such as images, video, css, etc that you want to make accessible to the outside world. Every new project includes by default, a folder named ./public.

Please refer to the public configuration for more informations.


Requests

The context object (ctx) contains all the request's related informations.

Please refer to the requests guide for more informations.


Responses

The context object (ctx) contains a list of values and functions useful to manage server responses.

Please refer to the responses guide for more informations.


Routing

./api/**/config/routes.json files define all available routes for the clients.

Please refer to the routing guide for more informations.


Services

Services are a set of reusable functions. They are particularly useful to respect the DRY (don’t repeat yourself) programming concept and to simplify controllers logic.

Please refer to the services guide for more informations.


+ + + diff --git a/docs/.vuepress/dist/3.x.x/configurations/configurations.html b/docs/.vuepress/dist/3.x.x/configurations/configurations.html new file mode 100644 index 0000000000..2ef2b4240a --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/configurations/configurations.html @@ -0,0 +1,185 @@ + + + + + + Configurations | Strapi Docs + + + + + + + +

Configurations

The main configurations of the project are located in the ./config directory. Additional configs can be added in the ./api/**/config folder of each API and plugin by creating JavaScript or JSON files.

Application

Contains the main configurations relative to your project.

Path — ./config/application.json.

{
+  "favicon": {
+    "path": "favicon.ico",
+    "maxAge": 86400000
+  },
+  "public": {
+    "path": "./public",
+    "maxAge": 60000
+  }
+}
+
  • favicon
    • path (string): Path to the favicon file. Default value: favicon.ico.
    • maxAge (integer): Cache-control max-age directive in ms. Default value: 86400000.
  • public
    • path (string): Path to the public folder. Default value: ./public.
    • maxAge (integer): Cache-control max-age directive in ms. Default value: 60000.

Custom

Add custom configurations to the project. The content of this file is available through the strapi.config object.

Example

Path — ./config/custom.json.

{
+  "backendURL": "http://www.strapi.io",
+  "mainColor": "blue"
+}
+

These configurations are accessible through strapi.config.backendURL and strapi.config.mainColor.


Language

As described in the i18n documentation, Strapi includes an internationalization system. This is especially useful to translate API messages (errors, etc.).

Path — ./config/language.json.

{
+  "enabled": true,
+  "defaultLocale": "en_us",
+  "modes": [
+    "query",
+    "subdomain",
+    "cookie",
+    "header",
+    "url",
+    "tld"
+  ],
+  "cookieName": "locale"
+}
+
  • enabled (boolean): Enable or disable i18n. Default value: true.
  • defaultLocale (string): Default locale used by the application. Default value: en_us.
  • modes (array): Methods used to detect client language. Default value: ["query", "subdomain", "cookie", "header", "url", "tld"].
  • cookieName (string): Name of the cookie used to store the locale name. Default value: locale.

Functions

The ./config/functions/ folder contains a set of JavaScript files in order to add dynamic and logic based configurations.

Bootstrap

Path — ./config/functions/bootstrap.js.

The bootstrap function is called at every server start. You can use it to add a specific logic at this moment of your server's lifecycle.

Here are some use cases:

  • Create an admin user if there isn't.
  • Fill the database with some necessary data.
  • Check that the database is up-and-running.

CRON tasks

CRON tasks allow you to schedule jobs (arbitrary functions) for execution at specific dates, with optional recurrence rules. It only uses a single timer at any given time (rather than reevaluating upcoming jobs every second/minute).

Make sure the enabled cron config is set to true in your environment's variables.

The cron format consists of:

*    *    *    *    *    *
+┬    ┬    ┬    ┬    ┬    ┬
+│    │    │    │    │    |
+│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
+│    │    │    │    └───── month (1 - 12)
+│    │    │    └────────── day of month (1 - 31)
+│    │    └─────────────── hour (0 - 23)
+│    └──────────────────── minute (0 - 59)
+└───────────────────────── second (0 - 59, OPTIONAL)
+

To define a CRON job, add your logic like bellow:

Path — ./config/functions/cron.js.

module.exports = {
+
+  /**
+   * Simple example.
+   * Every monday at 1am.
+   */
+
+  '0 0 1 * * 1': () => {
+    // Add your own logic here (eg. send a queue of email, create a database backup, etc.).
+  }
+};
+

Locales

The locales directory contains the translations of your API.

Each JSON file located in the folder must have the name of its corresponding translation (eg. en_US.json, fr_FR.json, etc.). Each line defines a translation key and its corresponding value.

Example

Path — ./config/locales/en_US.json.

{
+  "welcome": "Welcome"
+}
+

Take a look at the internationalization's guide for more details.


Environments

Most of the application's configurations are defined by environment. It means that you can specify settings for each environment (development, production, test, etc.).

You can access the config of the current environment through strapi.config.currentEnvironment.


Database

Path — ./config/environments/**/database.json.

  • defaultConnection (string): Connection by default for models which are not related to a specific connection. Default value: default.
  • connections List of all available connections. +
    • default
      • connector (string): Connector used by the current connection. Default value: strapi-hook-mongoose.
      • client (string): Client used to store session. Default value: cookie.
      • key (string): Cookie key name. Default value: strapi.sid
      • maxAge (integer): Time in milliseconds before the session expire. Default value: 86400000.
      • rolling (boolean): Force a session identifier cookie to be set on every response. Default value: false.
      • signed (boolean): httpOnly or not. Default value: true.
      • overwrite (boolean): Can overwrite or not. Default value: true.
      • settings Useful for external session stores such as Redis. +
        • host (string): Database host name. Default value: localhost.
        • port (integer): Database port. Default value: 27017.
        • database (string): Database name. Default value: development.
        • username (string): Username used to establish the connection.
        • password (string): Password used to establish the connection.
        • options (object): List of additional options used by the connector.
        • timezone (string): Set the default behavior for local time (used only for a SQL database). Default value: utc.
    • options Options used for database connection. +
      • ssl (boolean): For ssl database connection.
      • debug (boolean): Show database exchanges and errors.
      • autoMigration (boolean): To disable auto tables/columns creation for SQL database.

Example

Path — ./config/environments/**/database.json.

{
+  "defaultConnection": "default",
+  "connections": {
+    "default": {
+      "connector": "strapi-hook-mongoose",
+      "settings": {
+        "client": "mongo",
+        "host": "localhost",
+        "port": 27017,
+        "database": "development",
+        "username": "fooUsername",
+        "password": "fooPwd"
+      },
+      "options": {
+        "authenticationDatabase": "",
+        "ssl": true,
+        "minimize": true
+      }
+    },
+    "postgres": {
+      "connector": "strapi-hook-bookshelf",
+      "settings": {
+        "client": "postgres",
+        "host": "localhost",
+        "port": 5432,
+        "username": "${process.env.USERNAME}",
+        "password": "${process.env.PWD}",
+        "database": "strapi",
+        "schema": "public"
+      },
+      "options": {
+        "debug": true
+      }
+    },
+    "mysql": {
+      "connector": "strapi-hook-bookshelf",
+      "settings": {
+        "client": "mysql",
+        "host": "localhost",
+        "port": 5432,
+        "username": "strapi",
+        "password": "root",
+        "database": ""
+      },
+      "options": {}
+    },
+    "redis": {
+      "connector": "strapi-redis",
+      "settings": {
+        "port": 6379,
+        "host": "localhost",
+        "password": ""
+      },
+      "options": {
+        "debug": false
+      }
+    }
+  }
+}
+

Please refer to the dynamic configurations section to use global environment variable to configure the databases.


Request

Path — ./config/environments/**/request.json.

  • session
    • enabled (boolean): Enable or disable sessions. Default value: false.
    • client (string): Client used to persist sessions. Default value: redis.
    • settings
      • host (string): Client host name. Default value: localhost.
      • port (integer): Client port. Default value: 6379.
      • database(integer)|String - Client database name. Default value: 10.
      • password (string): Client password. Default value: .
  • logger
    • level (string): Default log level. Default value: debug.
    • exposeInContext (boolean): Expose logger in context so it can be used through strapi.log.info(‘my log’). Default value: true.
    • requests (boolean): Enable or disable requests logs. Default value: false.
  • parser
  • enabled(boolean): Enable or disable parser. Default value: true.
  • multipart (boolean): Enable or disable multipart bodies parsing. Default value: true.
  • router
  • prefix (string): API url prefix (eg. /v1).

The session doesn't work with mongo as a client. The package that we should use is broken for now.


Response

Path — ./config/environments/**/response.json.

  • gzip
  • enabled (boolean): Enable or not GZIP response compression.
  • responseTime
  • enabled (boolean): Enable or not X-Response-Time header to response. Default value: false.

Security

Path — ./config/environments/**/security.json.

  • csrf
    • enabled (boolean): Enable or disable CSRF. Default value: depends on the environment.
    • key (string): The name of the CSRF token added to the model. Default value: _csrf.
    • secret (string): The key to place on the session object which maps to the server side token. Default value: _csrfSecret.
  • csp
    • enabled (boolean): Enable or disable CSP to avoid Cross Site Scripting (XSS) and data injection attacks.
  • p3p
  • enabled (boolean): Enable or disable p3p.
  • hsts
  • enabled (boolean): Enable or disable HSTS.
  • maxAge (integer): Number of seconds HSTS is in effect. Default value: 31536000.
  • includeSubDomains (boolean): Applies HSTS to all subdomains of the host. Default value: true.
  • xframe
    • enabled (boolean): Enable or disable X-FRAME-OPTIONS headers in response.
    • value (string): The value for the header, e.g. DENY, SAMEORIGIN or ALLOW-FROM uri. Default value: SAMEORIGIN.
  • xss
  • enabled (boolean): Enable or disable XSS to prevent Cross Site Scripting (XSS) attacks in older IE browsers (IE8).
  • cors
  • enabled (boolean): Enable or disable CORS to prevent your server to be requested from another domain.
  • origin (string): Allowed URLs (http://example1.com, http://example2.com or allows everyone *). Default value: http://localhost.
  • expose (array): Configures the Access-Control-Expose-Headers CORS header. If not specified, no custom headers are exposed. Default value: ["WWW-Authenticate", "Server-Authorization"].
  • maxAge (integer): Configures the Access-Control-Max-Age CORS header. Default value: 31536000.
  • credentials (boolean): Configures the Access-Control-Allow-Credentials CORS header. Default value: true.
  • methods (array)|String - Configures the Access-Control-Allow-Methods CORS header. Default value: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"].
  • headers (array): Configures the Access-Control-Allow-Headers CORS header. If not specified, defaults to reflecting the headers specified in the request's Access-Control-Request-Headers header. Default value: ["Content-Type", "Authorization", "X-Frame-Options"].
  • ip
    • enabled (boolean): Enable or disable IP blocker. Default value: false.
    • whiteList (array): Whitelisted IPs. Default value: [].
    • blackList (array): Blacklisted IPs. Default value: [].

Server

Path — ./config/environments/**/server.json.

  • host (string): Host name. Default value: localhost.
  • port (integer): Port on which the server should be running. Default value: 1337.
  • autoReload (boolean): Enable or disabled server reload on files update. Default value: depends on the environment.
  • cron
  • enabled (boolean): Enable or disable CRON tasks to schedule jobs at specific dates. Default value: false.
  • admin
  • path (string): Allow to change the URL to access the admin (default: /admin).
  • build
    • host (string): URL to access the admin panel (default: http://localhost:1337/admin).
    • backend (string): URL that the admin panel and plugins will request (default: http://localhost:1337). +
      • plugins
        • source (string): Define the source mode (origin, host, custom).
        • folder (string): Indicate what the plugins folder in host source mode.

Dynamic configurations

For security reasons, sometimes it's better to set variables through the server environment. It's also useful to push dynamics values into configurations files. To enable this feature into JSON files, Strapi embraces a JSON-file interpreter into his core to allow dynamic value in the JSON configurations files.

Syntax

The syntax is inspired by the template literals ES2015 specifications. These dynamic values are indicated by the Dollar sign and curly braces (${expression}).

Usage

In any JSON configurations files in your project, you can inject dynamic values like this:

Path — ./config/environments/production/database.json.

{
+  "defaultConnection": "default",
+  "connections": {
+    "default": {
+      "connector": "strapi-hook-mongoose",
+      "settings": {
+        "client": "mongo",
+        "uri": "${process.env.DATABASE_URI || ''}",
+        "host": "${process.env.DATABASE_HOST || '127.0.0.1'}",
+        "port": "${process.env.DATABASE_PORT || 27017}",
+        "database": "${process.env.DATABASE_NAME || 'production'}",
+        "username": "${process.env.DATABASE_USERNAME || ''}",
+        "password": "${process.env.DATABASE_PASSWORD || ''}"
+      },
+      "options": {}
+    }
+  }
+}
+

You can't execute functions inside the curly braces. Only strings are allowed.


Database configuration

Configuration files are not multi server friendly. So we create a data store for config you will want to update in production.

Usage

Get settings:

  • environment (string): Sets the environment you want to store the data in. By default it's current environment (can be an empty string if your config is environment agnostic).
  • type (string): Sets if your config is for an api, plugin or core. By default it's core.
  • name (string): You have to set the plugin or api name if type is api or plugin.
  • key (string, required): The name of the key you want to store.
// strapi.store(object).get(object);
+
+// create reusable plugin store variable
+const pluginStore = strapi.store({
+  environment: strapi.config.environment,
+  type: 'plugin',
+  name: 'users-permissions'
+});
+
+await pluginStore.get({key: 'grant'});
+

Set settings:

  • value (any, required): The value you want to store.
// strapi.store(object).set(object);
+
+// create reusable plugin store variable
+const pluginStore = strapi.store({
+  environment: strapi.config.environment,
+  type: 'plugin',
+  name: 'users-permissions'
+});
+
+await pluginStore.set({
+  key: 'grant',
+  value: {
+    ...
+  }
+});
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/getting-started/installation.html b/docs/.vuepress/dist/3.x.x/getting-started/installation.html new file mode 100644 index 0000000000..5ac3f059bf --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/getting-started/installation.html @@ -0,0 +1,31 @@ + + + + + + Installation | Strapi Docs + + + + + + + +

Installation

Installation is very easy and only takes a few seconds.

Requirements

Please make sure your computer/server meets the following requirements:

  • Node.js >= 9: Node.js is a server platform which runs JavaScript. Installation guide here.
  • MongoDB >= 2.6: MongoDB is a powerful document store. Installation guide here.

Setup

Time to install Strapi!

npm install strapi@alpha -g
+

If you encounter npm permissions issues, change the permissions to npm default directory.

It takes about 20 seconds with a good Internet connection. You can take a coffee ☕️ if you have a slow one.

Having troubles during the installation? Check if someone already had the same issue https://github.com/strapi/strapi/issues. If not, you can post one, or ask for help https://strapi.io/support.

Check installation

Once completed, please check that the installation went well, by running:

strapi -v
+

That should print 3.0.0-alpha.x.

Strapi is installed globally on your computer. Type strapi in your terminal you will have access to every available command lines.


Congrats! Now that Strapi is installed you can create your first API.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/getting-started/quick-start.html b/docs/.vuepress/dist/3.x.x/getting-started/quick-start.html new file mode 100644 index 0000000000..8fb722d0f1 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/getting-started/quick-start.html @@ -0,0 +1,91 @@ + + + + + + Quick start | Strapi Docs + + + + + + + +

Quick start

This section explains how to handle Strapi for the first time, (check out our tutorial video).

Table of contents:


Create your first project

Creating your first project with Strapi is easy:

#1 — Open your terminal

Open your terminal in the directory you want to create your application in.

#2 — Run the following command line in your terminal:

strapi new my-project
+

Generate a Strapi project

This action creates a new folder named my-project with the entire files structure of a Strapi application.

#3 — Go to your project and launch the server:

In your terminal run the following commands:

cd my-project
+strapi start
+

Start Strapi

Now that your app is running let's see how to create your first user.


Create your first user

In order to use the admin panel and to consume your API you first need to register your first user. This process only happens once if you don't have any user table created and is made to create the admin user that has all the permissions granted for your API.

If your using MongoDB for your database you don't have to create your table manually (it's already handled by Strapi) otherwise you'll have to create your user table first.

To create your first user, start your server (strapi start) and go to : http://localhost:1337/admin.

Register View

Now that your first user is registered let's see how to create your first api.


Create your first API

To create your first API, start your server (strapi start) and go to : http://localhost:1337/admin.

At this point, your application is empty. To create your first API is to use the Content Type Builder plugin: a powerful UI to help you create an API in a few clicks. Let's take the example of an e-commerce API, which manages products.

#1 — Go to the Content Type Builder plugin.

Content Type Builder - Home

#2 — Create a Content Type named Product and submit the form.

Content Type Builder - Create a new Content Type

#3 — Add three fields in this Content Type.

  • A string field named name.
  • A text field named description.
  • A number field named price (with float as number format).

Content Type Builder - List fields in Product

#4 — Save. That's it!

See the CLI documentation for more information on how to do it the hacker way.

Files structure

A new directory has been created in the ./api folder of your application which contains all the needed stuff for your Product Content Type: routes, controllers, services and models. Take a look at the API structure documentation for more informations.

Well done, you created your first API using Strapi!


Manage your data

After creating your first Content Type, it would be great to be able to create, edit or delete entries.

#1 — Go to the Product list by clicking on the link in the left menu (generated by the Content Manager plugin).

Content Type Builder - Home

#2 — Click on the button Add New Product and fill the form.

Content Type Builder - Home

#3 — Save! You can edit or delete this entry by clicking on the icons at the right of the row.

Content Type Builder - Home


Consume your API

Your API is now ready and contains data. At this point, you'll probably want to use this data in mobile or desktop applications. +In order to do so, you'll need to allow access to other users (identified as 'Guest').

1 - Go to the Auth & Permissions View by clicking on Auth & Permissions link in the left menu and click on the Guest Role item.

Auth & Permissions - Home

2 - Manage your APIs permissions in the Permissions section of the Edit Guest Role view by enabling or disabling specific actions.

Auth & Permissions - Edit Guest

List entries (GET)

To retrieve the list of products, use the GET /your-content-type route.

Generated APIs provide a handy way to filter and order queries. In that way, ordering products by price is as easy as GET http://localhost:1337/product?_sort=price:asc. For more informations, read the filters documentation

Here is an example using jQuery.

$.ajax({
+  type: 'GET',
+  url: 'http://localhost:1337/product?_sort=price:asc', // Order by price.
+  done: function(products) {
+    console.log('Well done, here is the list of products: ', products);
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Get a specific entry (GET)

If you want to get a specific entry, add the id of the wanted product at the end of the url.

$.ajax({
+  type: 'GET',
+  url: 'http://localhost:1337/product/123', // Where `123` is the `id` of the product.
+  done: function(product) {
+    console.log('Well done, here is the product having the `id` 123: ', product);
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Create data (POST)

Use the POST route to create a new entry.

jQuery example:

$.ajax({
+  type: 'POST',
+  url: 'http://localhost:1337/product',
+  data: {
+    name: 'Cheese cake',
+    description: 'Chocolate cheese cake with ice cream',
+    price: 5
+  },
+  done: function(product) {
+    console.log('Congrats, your product has been successfully created: ', product); // Remember the product `id` for the next steps.
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Update data (PUT)

Use the PUT route to update an existing entry.

jQuery example:

$.ajax({
+  type: 'PUT',
+  url: 'http://localhost:1337/product/123', // Where `123` is the `id` of the product.
+  data: {
+    description: 'This is the new description'
+  },
+  done: function(product) {
+    console.log('Congrats, your product has been successfully updated: ', product.description);
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Delete data (DELETE)

Use the DELETE route to delete an existing entry.

jQuery example:

$.ajax({
+  type: 'DELETE',
+  url: 'http://localhost:1337/product/123', // Where `123` is the `id` of the product.
+  done: function(product) {
+    console.log('Congrats, your product has been successfully deleted: ', product);
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Congratulations! You successfully finished the Getting Started guide! Read the concepts to understand more advanced concepts.

Also, feel free to join the community thanks to the different channels listed in the community page: team members, contributors and developers will be happy to help you.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/authentication.html b/docs/.vuepress/dist/3.x.x/guides/authentication.html new file mode 100644 index 0000000000..202238f319 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/authentication.html @@ -0,0 +1,126 @@ + + + + + + Authentication | Strapi Docs + + + + + + + +

Authentication

WARNING

This feature requires the Users & Permissions plugin (installed by default).

Register a new user

This route lets you create new users.

Usage

$.ajax({
+  type: 'POST',
+  url: 'http://localhost:1337/auth/local/register',
+  data: {
+    username: 'Strapi user',
+    email: 'user@strapi.io',
+    password: 'strapiPassword'
+  },
+  done: function(auth) {
+    console.log('Well done!');
+    console.log('User profile', auth.user);
+    console.log('User token', auth.jwt);
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Login.

This route lets you login your users by getting an authentication token.

Local

  • The identifier param can either be an email or a username.
$.ajax({
+  type: 'POST',
+  url: 'http://localhost:1337/auth/local',
+  data: {
+    identifier: 'user@strapi.io',
+    password: 'strapiPassword'
+  },
+  done: function(auth) {
+    console.log('Well done!');
+    console.log('User profile', auth.user);
+    console.log('User token', auth.jwt);
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Providers

Thanks to Grant and Purest, you can easily use OAuth and OAuth2 +providers to enable authentication in your application. By default, +Strapi comes with the following providers:

👀   See our complete example with detailed tutorials for each provider (with React)


To use the providers authentication, set your credentials in the admin interface (Plugin Users & Permissions > Providers). +Then update and enable the provider you want use.

Redirect your user to: GET /connect/:provider. eg: GET /connect/facebook

After his approval, he will be redirected to /auth/:provider/callback. The jwt and user data will be available in the body response.

Response payload:

{
+  "user": {},
+  "jwt": ""
+}
+

Use your token to be identified as a user.

By default, each API request is identified as guest role (see permissions of guest's role in your admin dashboard). To make a request as a user, you have to set the Authorization token in your request headers. You receive a 401 error if you are not authorized to make this request or if your authorization header is not correct.

Usage

  • The token variable is the data.jwt received when login in or registering.
$.ajax({
+  type: 'GET',
+  url: 'http://localhost:1337/article',
+  headers: {
+    Authorization: `Bearer ${token}`
+  },
+  done: function(data) {
+    console.log('Your data', data);
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Send forgot password request.

This action sends an email to a user with the link of you reset password page. This link contains an URL param code which is required to reset user password.

Usage

  • email is your user email.
  • url is the url link that user will receive.
$.ajax({
+  type: 'POST',
+  url: 'http://localhost:1337/auth/forgot-password',
+  data: {
+    email: 'user@strapi.io',
+    url: 'http://mon-site.com/rest-password'
+  },
+  done: function() {
+    console.log('Your user received an email');
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

Received link url format http://mon-site.com/rest-password?code=privateCode

Reset user password.

This action will reset the user password.

Usage

  • code is the url params received from the email link (see forgot password)
$.ajax({
+  type: 'POST',
+  url: 'http://localhost:1337/auth/reset-password',
+  data: {
+    code: 'privateCode',
+    password: 'myNewPassword',
+    passwordConfirmation: 'myNewPassword'
+  },
+  done: function() {
+    console.log('Your user password is reset');
+  },
+  fail: function(error) {
+    console.log('An error occurred:', error);
+  }
+});
+

User Object In Strapi Context

The User object is available to successfully authenticated requests.

Usage

  • The authenticated user object is a property of ctx.state.
  create: async (ctx) => {
+
+    const { _id } = ctx.state.user
+
+    const depositObj = {
+      ...ctx.request.body,
+      depositor: _id
+    }
+
+    const data = await strapi.services.deposit.add(depositObj);
+
+    // Send 201 `created`
+    ctx.created(data);
+  }
+
+

Email templates

See the documentation on GitHub

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/controllers.html b/docs/.vuepress/dist/3.x.x/guides/controllers.html new file mode 100644 index 0000000000..e7a9c30b50 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/controllers.html @@ -0,0 +1,44 @@ + + + + + + Controllers | Strapi Docs + + + + + + + +

Controllers

See the controllers' concepts for details.

How to create a controller?

There are two ways to create a controller:

  • Using the CLI strapi generate:controller user. Read the CLI documentation for more information.
  • Manually create a JavaScript file named User.js in ./api/**/controllers which contains at least one endpoint.

Adding Endpoints

Each controller’s action must be an async function and receives the context (ctx) object as first parameter containing the request context and the response context. The action has to be bounded by a route.

Example

In this example, we are defining a specific route in ./api/hello/config/routes.json that takes Hello.index as handler. It means that every time a web browser is pointed to the /hello URL, the server will called the index action in the Hello.js controller. Our index action will return Hello World!. You can also return a JSON object.

Path — ./api/hello/config/routes.json.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/hello",
+      "handler": "Hello.index"
+    }
+  ]
+}
+

Path — ./api/hello/controllers/Hello.js.

module.exports = {
+  // GET /hello
+  index: async (ctx) => {
+    ctx.send('Hello World!');
+  }
+};
+

A route handler can only access the controllers defined in the ./api/**/controllers folders.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/deployment.html b/docs/.vuepress/dist/3.x.x/guides/deployment.html new file mode 100644 index 0000000000..85785f54db --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/deployment.html @@ -0,0 +1,42 @@ + + + + + + Deployment | Strapi Docs + + + + + + + +

Deployment

#1 - Configurate

Update the production settings with the IP and domain name where the project will be running.

Path — ./config/environments/production/server.json.

{
+  "host": "domain.io", // IP or domain
+  "port": 1337,
+  "autoReload": {
+    "enabled": false
+  },
+  "admin": {
+    "path": "/dashboard" // We highly recommend to change the default `/admin` path for security reasons.
+  }
+}
+

⚠️ If you changed the path to access to the administration, the step #2 is required.

#2 - Setup (optional)

Run this following command to install the dependencies and build the project with your custom configurations.

cd /path/to/the/project
+npm run setup
+

To display the build logs use the --debug option npm run setup --debug.

#3 - Launch the server

Run the server with the production settings.

NODE_ENV=production npm start
+

WARNING

We highly recommend to use pm2 to manage your process.

Advanced configurations

If you want to host the administration on another server than the API, please take a look at this dedicated section.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/email.html b/docs/.vuepress/dist/3.x.x/guides/email.html new file mode 100644 index 0000000000..c9e8325261 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/email.html @@ -0,0 +1,38 @@ + + + + + + Email | Strapi Docs + + + + + + + +

Email

WARNING

This feature requires the Email plugin (installed by default).

Thanks to the plugin Email, you can send email on your server or externals providers such as Sendgrid.

Usage

await strapi.plugins['email'].services.email.send({
+  to: 'admin@strapi.io',
+  from: 'robbot@strapi.io',
+  replyTo: 'no-reply@strapi.io',
+  subject: 'Use strapi email provider successfully',
+  text: 'Hello world!',
+  html: 'Hello world!'
+});
+

Install providers

By default Strapi provides a local email system. You might want to send email with Sendgrid or another provider.

To install a new provider run:

$ npm install strapi-email-sendgrid@alpha --save
+

We have two providers available strapi-email-sendgrid and strapi-upload-mailgun, use the alpha tag to install one of them. Then, visit /admin/plugins/email/configurations/development on your web browser and configure the provider.

If you want to create your own, make sure the name starts with strapi-email- (duplicating an existing one will be easier to create), modify the auth config object and customize the send functions.

Check all community providers available on npmjs.org - Providers list

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/filters.html b/docs/.vuepress/dist/3.x.x/guides/filters.html new file mode 100644 index 0000000000..1ecdff7294 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/filters.html @@ -0,0 +1,55 @@ + + + + + + Filters | Strapi Docs + + + + + + + +

Filters

See the filters' concepts for details.

by default, the filters can only be used from find endpoints generated by the Content Type Builder and the CLI. If you need to implement a filters system somewhere else, read the programmatic usage section.

Available operators

The available operators are separated in four different categories:

Filters

Easily filter results according to fields values.

  • =: Equals
  • _ne: Not equals
  • _lt: Lower than
  • _gt: Greater than
  • _lte: Lower than or equal to
  • _gte: Greater than or equal to
  • _contains: Contains
  • _containss: Contains case sensitive

Examples

Find users having John as first name.

GET /user?firstName=John

Find products having a price equal or greater than 3.

GET /product?price_gte=3

Sort

Sort according to a specific field.

Example

Sort users by email.

  • ASC: GET /user?_sort=email:asc
  • DESC: GET /user?_sort=email:desc

Limit

Limit the size of the returned results.

Example

Limit the result length to 30.

GET /user?_limit=30

Start

Skip a specific number of entries (especially useful for pagination).

Example

Get the second page of results.

GET /user?_start=10&_limit=10

Programmatic usage

Requests system can be implemented in custom code sections.

Extracting requests filters

To extract the filters from an JavaScript object or a request, you need to call the strapi.utils.models.convertParams helper.

The returned objects is formatted according to the ORM used by the model.

Example

Path — ./api/user/controllers/User.js.

// Define a list of params.
+const params = {
+  '_limit': 20,
+  '_sort': 'email'
+};
+
+// Convert params.
+const formattedParams = strapi.utils.models.convertParams('user', params); // { limit: 20, sort: 'email' }
+

Query usage

Example

Path — ./api/user/controllers/User.js.

module.exports = {
+
+  find: async (ctx) => {
+    // Convert params.
+    const formattedParams = strapi.utils.models.convertParams('user', ctx.request.query);
+
+    // Get the list of users according to the request query.
+    const filteredUsers = await User
+      .find()
+      .where(formattedParams.where)
+      .sort(formattedParams.sort)
+      .skip(formattedParams.start)
+      .limit(formattedParams.limit);
+
+    // Finally, send the results to the client.
+    ctx.body = filteredUsers;
+  };
+};
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/graphql.html b/docs/.vuepress/dist/3.x.x/guides/graphql.html new file mode 100644 index 0000000000..5e4fb65a55 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/graphql.html @@ -0,0 +1,414 @@ + + + + + + GraphQL | Strapi Docs + + + + + + + +

GraphQL

WARNING

This feature requires the GraphQL plugin (not installed by default).

Usage

To get started with GraphQL in your app, please install the plugin first. To do that, open your terminal and run the following command:

strapi install graphql
+

Then, start your app and open your browser at http://localhost:1337/playground. You should see the interface (GraphQL Playground) that will help you to write GraphQL query to explore your data.

Install the ModHeader extension to set the Authorization header in your request

Configurations

By default, the Shadow CRUD feature is enabled and the GraphQL is set to /graphql. You can edit these configurations in the following files.

Path — ./plugins/graphql/config/settings.json.

{
+  "endpoint": "/graphql",
+  "shadowCRUD": true,
+  "depthLimit": 7
+}
+

Query API

In the section, we assume that the Shadow CRUD feature is enabled. For each model, the plugin auto-generates queries which just fit to your needs.

Fetch a single entry
  • id: String
query {
+  user(id: "5aafe871ad624b7380d7a224") {
+    username
+    email
+  }
+}
+
Fetch multiple entries
query {
+  users {
+    username
+    email
+  }
+}
+

Filters

You can also apply different parameters to the query to make more complex queries.

  • limit (integer): Define the number of returned entries.
  • start (integer): Define the amount of entries to skip.
  • sort (string): Define how the data should be sorted.
  • where (object): Define the filters to apply in the query. +
    • <field>: Equals.
    • <field>_ne: Not equals.
    • <field>_lt: Lower than.
    • <field>_lte: Lower than or equal to.
    • <field>_gt: Greater than.
    • <field>_gte: Lower than or equal to.
    • <field>_contains: Contains.
    • <field>_containss: Contains sensitive.

Return the second decade of users which have an email that contains @strapi.io ordered by username.

query {
+  users(limit: 10, start: 10, sort: "username:asc", where: {
+    email_contains: "@strapi.io"
+  }) {
+    username
+    email
+  }
+}
+

Return the users which have been created after the March, 19th 2018 4:21 pm.

query {
+  users(where: {
+    createdAt_gt: "2018-03-19 16:21:07.161Z"
+  }) {
+    username
+    email
+  }
+}
+

Shadow CRUD

To simplify and automate the build of the GraphQL schema, we introduced the Shadow CRUD feature. It automatically generates the type definition, queries and resolvers based on your models. The feature also lets you make complex query with many arguments such as limit, sort, start and where.

Example

If you've generated an API called Post using the CLI strapi generate:api post or the administration panel, your model looks like this:

Path — ./api/post/models/Post.settings.json.

{
+  "connection": "default",
+  "options": {
+    "timestamps": true
+  },
+  "attributes": {
+    "title": {
+      "type": "string"
+    }
+    "content": {
+      "type": "text"
+    },
+    "published": {
+      "type": "boolean"
+    }
+  }
+}
+

The generated GraphQL type and queries will be:

type Post {
+  _id: String
+  created_at: String
+  updated_at: String
+  title: String
+  content: String
+  published: Boolean
+}
+
+type Query {
+  posts(sort: String, limit: Int, start: Int, where: JSON): [Post]
+  post(id: String!): Post
+}
+

The query will use the generated controller's actions as resolvers. It means that the posts query will execute the Post.find action and the post query will use the Post.findOne action.

Aggregation & Grouping

This feature is only available on Mongoose ORM.

Strapi now supports Aggregation & Grouping. +Let's consider again the model mentioned above:

type Post {
+  _id: ID
+  createdAt: String
+  updatedAt: String
+  title: String
+  content: String
+  nb_likes: Int,
+  published: Boolean
+}
+
+

Strapi will generate automatically for you the following queries & types:

Aggregation

type PostConnection {
+  values: [Post]
+  groupBy: PostGroupBy
+  aggregate: PostAggregator
+}
+
+type PostGroupBy {
+  _id: [PostConnection_id]
+  createdAt: [PostConnectionCreatedAt]
+  updatedAt: [PostConnectionUpdatedAt]
+  title: [PostConnectionTitle]
+  content: [PostConnectionContent]
+  nb_likes: [PostConnectionNbLikes],
+  published: [PostConnectionPublished]
+}
+
+type PostConnectionPublished {
+  key: Boolean
+  connection: PostConnection
+}
+
+type PostAggregator {
+  count: Int
+  sum: PostAggregatorSum
+  avg: PostAggregatorAvg
+  min: PostAggregatorMin
+  max: PostAggregatorMax
+}
+
+type PostAggregatorAvg {
+  nb_likes: Float
+}
+
+type PostAggregatorMin { // Same for max and sum
+  nb_likes: Int
+}
+
+type Query {
+  postsConnection(sort: String, limit: Int, start: Int, where: JSON): PostConnection
+}
+

Getting the total count and the average likes of posts:

postsConnection {
+  aggregate {
+    count
+    avg {
+      nb_likes
+    }
+  }
+
+}
+

Let's say we want to do the same query but for only published posts

postsConnection(where: { published: true }) {
+  aggregate {
+    count
+    avg {
+      nb_likes
+    }
+  }
+
+}
+

Gettings the average likes of published and unpublished posts

postsConnection {
+  groupBy {
+    published: {
+      key
+      connection {
+        aggregate {
+          avg {
+            nb_likes
+          }
+        }
+      }
+    }
+  }
+}
+

Result

{
+  data: {
+    postsConnection: {
+      groupBy: {
+        published: [
+          {
+            key: true,
+            connection: {
+              aggregate: {
+                avg {
+                  nb_likes: 10
+                }
+              }
+            }
+          },
+          {
+            key: false,
+            connection: {
+              aggregate: {
+                avg {
+                  nb_likes: 0
+                }
+              }
+            }
+          }
+        ]
+      }
+    }
+  }
+}
+

Customise the GraphQL schema

If you want to define a new scalar, input or enum types, this section is for you. To do so, you will have to create a schema.graphql file. This file has to be placed into the config folder of each API ./api/*/config/schema.graphql or plugin ./plugins/*/config/schema.graphql.

Structure — schema.graphql.

module.exports = {
+  definition: ``,
+  query: ``,
+  type: {},
+  resolver: {
+    Query: {}
+  }
+};
+
  • definition (string): let's you define new type, input, etc.
  • query (string): where you add custom query.
  • type (object): allows you to add description, deprecated field or disable the Shadow CRUD feature on a specific type.
  • resolver (object): +
    • Query (object): let's you define custom resolver, policies for a query.

Example

Let say we are using the same previous Post model.

Path — ./api/post/config/schema.graphql.

module.exports = {
+  definition: `
+    enum PostStatusInput {
+      draft
+      reviewing
+      reviewed
+      published
+      deleted
+    }
+  `,
+  query: `
+    postsByAuthor(id: String, status: PostStatusInput, limit: Int): [Post]!
+  `,
+  resolver: {
+    Query: {
+      post: {
+        description: 'Return a single post',
+        policy: ['plugins.users-permissions.isAuthenticated', 'isOwner'], // Apply the 'isAuthenticated' policy of the `Users & Permissions` plugin, then the 'isOwner' policy before executing the resolver.
+      },
+      posts: {
+        description: 'Return a list of posts', // Add a description to the query.
+        deprecated: 'This query should not be used anymore. Please consider using postsByAuthor instead.'
+      },
+      postsByAuthor: {
+        description: 'Return the posts published by the author',
+        resolver: 'Post.findByAuthor'
+      },
+      postsByTags: {
+        description: 'Return the posts published by the author',
+        resolverOf: 'Post.findByTags', // Will apply the same policy on the custom resolver than the controller's action `findByTags`.
+        resolver: (obj, options, ctx) => {
+          // ctx is the context of the Koa request.
+          await strapi.controllers.posts.findByTags(ctx);
+
+          return ctx.body.posts || `There is no post.`;
+        }
+      }
+    }
+  }
+};
+

Define a new type

Edit the definition attribute in one of the schema.graphql files of your project by using the GraphQL Type language string.

The easiest way is to create a new model using the CLI strapi generate:model category --api post, so you don't need to customise anything.

module.exports = {
+  definition: `
+    type Person {
+      id: Int!
+      firstname: String!
+      lastname: String!
+      age: Int
+      children: [Person]
+    }
+  `
+};
+

To explore the data of the new type Person, you need to define a query and associate a resolver to this query.

module.exports = {
+  definition: `
+    type Person {
+      id: Int!
+      firstname: String!
+      lastname: String!
+      age: Int
+      children: [Person]
+    }
+  `,
+  query: `
+    person(id: Int!): Person
+  `,
+  type: {
+    Person: {
+      _description: 'The Person type description', // Set the description for the type itself.
+      firstname: 'The firstname of the person',
+      lastname: 'The lastname of the person',
+      age: {
+        description: 'The age of the person',
+        deprecated: 'We are not using the age anymore, we can find it thanks to our powerful AI'
+      },
+      children: 'The children of the person'
+    }
+  }
+  resolver: {
+    Query: {
+      person: {
+        description: 'Return a single person',
+        resolver: 'Person.findOne' // It will use the action `findOne` located in the `Person.js` controller*.
+      }
+    }
+  }
+};
+

The resolver parameter also accepts an object as a value to target a controller located in a plugin.

module.exports = {
+  ...
+  resolver: {
+    Query: {
+      person: {
+        description: 'Return a single person',
+        resolver: {
+          plugin: 'users-permissions',
+          handler: 'User.findOne' // It will use the action `findOne` located in the `Person.js` controller inside the plugin `Users & Permissions`.
+        }
+      }
+    }
+  }
+};
+

Add description and deprecated reason

One of the most powerful features of GraphQL is the auto-documentation of the schema. The GraphQL plugin allows you to add a description to a type, a field and a query. You can also deprecate a field or a query.

Path — ./api/post/models/Post.settings.json.

{
+  "connection": "default",
+  "info": {
+    "description": "The Post type description"
+  },
+  "options": {
+    "timestamps": true
+  },
+  "attributes": {
+    "title": {
+      "type": "string",
+      "description": "The title of the post",
+      "deprecated": "We are not using the title anymore, it is auto-generated thanks to our powerful AI"
+    },
+    "content": {
+      "type": "text",
+      "description": "The content of the post."
+    },
+    "published": {
+      "type": "boolean",
+      "description": "Is the post published or not. Yes = true."
+    }
+  }
+}
+

It might happens that you want to add a description to a query or deprecate it. To do that, you need to use the schema.graphql file.

Remember: The schema.graphql file has to be placed into the config folder of each API ./api/*/config/schema.graphql or plugin ./plugins/*/config/schema.graphql.

Path — ./api/post/config/schema.graphql.

module.exports = {
+  resolver: {
+    Query: {
+      posts: {
+        description: 'Return a list of posts', // Add a description to the query.
+        deprecated: 'This query should not be used anymore. Please consider using postsByAuthor instead.' // Deprecate the query and explain the reason why.
+      }
+    }
+  }
+};
+

Execute a policy before a resolver

Sometimes a query needs to be only accessible to authenticated user. To handle this, Strapi provides a solid policy system. A policy is a function executed before the final action (the resolver). You can define an array of policy that will be executed in order.

module.exports = {
+  resolver: {
+    Query: {
+      posts: {
+        description: 'Return a list of posts',
+        policy: ['plugins.users-permissions.isAuthenticated', 'isOwner', 'global.logging']
+      }
+    }
+  }
+};
+

In this example, the policy isAuthenticated located in ./plugins/users-permissions/config/policies/isAuthenticated.js will be executed first. Then, the isOwner policy located in the Post API ./api/post/config/policies/isOwner.js. Next, it will execute the logging policy located in ./config/policies/logging.js. Finally, the resolver will be executed.

There is no custom resolver in that case, so it will execute the default resolver (Post.find) provided by the Shadow CRUD feature.

By default, the plugin will execute the actions located in the controllers that has been generated via the Content-Type Builder plugin or the CLI. For example, the query posts is going to execute the logic inside the find action in the Post.js controller. It might happens that you want to execute another action or a custom logic for one of your query.

module.exports = {
+  resolver: {
+    Query: {
+      posts: {
+        description: 'Return a list of posts by author',
+        resolver: 'Post.findByAuthor'
+      }
+    }
+  }
+};
+

In this example, it will execute the findByAuthor action of the Post controller. It also means that the resolver will apply on the posts query the permissions defined on the findByAuthor action (through the administration panel).

The obj parameter is available via ctx.params and the options are available via ctx.query in the controller's action.

Define a custom resolver

module.exports = {
+  resolver: {
+    Query: {
+      posts: {
+        description: 'Return a list of posts by author',
+        resolver: (obj, options, context) => {
+          // You can return a raw JSON object or a promise.
+
+          return [{
+            title: 'My first blog post',
+            content: 'Whatever you want...'
+          }];
+        }
+      }
+    }
+  }
+};
+

You can also execute a custom logic like above. However, the roles and permissions layers won't work.

Apply permissions on a query

It might happens that you want apply our permissions layer on a query. That's why, we created the resolverOf attribute. This attribute defines which are the permissions that should be applied to this resolver. By targeting an action it means that you're able to edit permissions for this resolver directly from the administration panel.

module.exports = {
+  resolver: {
+    Query: {
+      posts: {
+        description: 'Return a list of posts by author',
+        resolverOf: 'Post.find', // Will apply the same policy on the custom resolver than the controller's action `find` located in `Post.js`.
+        resolver: (obj, options, context) => {
+          // You can return a raw JSON object or a promise.
+
+          return [{
+            title: 'My first blog post',
+            content: 'Whatever you want...'
+          }];
+        }
+      }
+    }
+  }
+};
+

Disable a query or a type

To do that, we need to use the schema.graphql like below:

module.exports = {
+  type: {
+    Post: false // The Post type won't be "queriable".
+  }
+  resolver: {
+    Query: {
+      posts: false // The `posts` query will no longer be in the GraphQL schema.
+    }
+  }
+};
+

FAQ

How are the types name defined?

The type name is the global ID of the model. You can find the global ID of a model like that strapi.models[xxx].globalId or strapi.plugins[xxx].models[yyy].globalId.

Where should I put the field description and deprecated reason?

We recommend to put the field description and deprecated reason in the model. Right now, the GraphQL plugin is the only which uses these fields. Another plugin could use this description in the future as well. However, sometimes you don't have the choice, especially when you're defining a custom type.

It's not a bad practice to put the description and deprecated attribute in the schema.graphql, though.

Why are the "createdAt" and "updatedAt" field added to my type?

The plugin detects if the timestamps option is set to true in the model. By default, when you generate an API this option is checked. Set it to false in your model to remove these fields.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/i18n.html b/docs/.vuepress/dist/3.x.x/guides/i18n.html new file mode 100644 index 0000000000..3036998ebc --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/i18n.html @@ -0,0 +1,50 @@ + + + + + + Internationalization | Strapi Docs + + + + + + + +

Internationalization

See the internationalization' concepts for details.

Because an API may need to send different data based on the language of the user, Strapi provides a built-in strategy to handle the internationalization (i18n).

Usage

The i18n method that will allow you to retrieve the right string based on the language is accessible through the request's context.

There are many strategies to define the language that the server should use to return the correct translation. It can be based on the locale query parameter, the cookie or the Accept-Language header.

  • Query: Add the locale parameter in the URL GET /hello/John?locale=en_US.
  • Cookie: Set the locale field in the cookie locale=en\-US;.
  • Header: Set the Accept-Language header with the value en_US.

Please refer to the language configuration

Example

Let's say we want to say Hello John in english and Bonjour Tom in french. We need to use the built-in i18n feature and replace the string based on the received name.

Path — ./api/hello/config/routes.json.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/hello/:name",
+      "handler": "Hello.sayHello"
+    }
+  ]
+}
+

Path — ./api/hello/controllers/Hello.js.

module.exports = {
+  // GET /hello/:name
+  sayHello: async (ctx) => {
+    ctx.send(ctx.i18n.__('Hello %s', ctx.params.name));
+  }
+};
+

You need to define the english and french translation for this key.

Path — ./config/locales/en_US.json.

{
+  "Hello %s": "Hello %s"
+}
+

Path — ./config/locales/fr_FR.json.

{
+  "Hello %s": "Bonjour %s"
+}
+

That's all! The request GET /hello/John?locale=en_US will return Hello John and GET /hello/Tom?locale=fr_FR will return Bonjour Tom.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/models.html b/docs/.vuepress/dist/3.x.x/guides/models.html new file mode 100644 index 0000000000..cd36715488 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/models.html @@ -0,0 +1,408 @@ + + + + + + Models | Strapi Docs + + + + + + + +

Models

See the models' concepts for details.

How to create a model?

If you are just starting out it is very convenient to generate some models with the Content Type Builder, directly in the admin interface. You can then review the generated model mappings on the code level. The UI takes over a lot of validation tasks and gives you a fast feeling for available features.

Use the CLI, and run the following command strapi generate:model user firstname:string lastname:string. Read the CLI documentation for more informations.

This will create two files located at ./api/user/models:

  • User.settings.json: contains the list of attributes and settings. The JSON format makes the file easily editable.
  • User.js: imports User.settings.json and extends it with additional settings and lifecycle callbacks.

when you create a new API using the CLI (strapi generate:api <name>), a model is automatically created.

Model Information

The info key on the model-json states information about the model. This information is used in the admin interface, when showing the model.

  • name: The name of the model, as shown in admin interface.
  • description: The description of the model.
  • mainField: Determines which model-attribute is shown when displaying the model.

Model options

The options key on the model-json states.

  • idAttribute: This tells the model which attribute to expect as the unique identifier for each database row (typically an auto-incrementing primary key named 'id').
  • idAttributeType: Data type of idAttribute, accepted list of value bellow:

Define the attributes

The following types are currently available:

  • string
  • text
  • integer
  • biginteger
  • float
  • decimal
  • password
  • date
  • time
  • datetime
  • timestamp
  • boolean
  • binary
  • uuid
  • enumeration
  • json
  • email

Validations

You can apply basic validations to the attributes. The following supported validations are only supported by MongoDB connection. +If you're using SQL databases, you should use the native SQL constraints to apply them.

  • required (boolean) — if true adds a required validator for this property.
  • unique (boolean) — whether to define a unique index on this property.
  • max (integer) — checks if the value is greater than or equal to the given minimum.
  • min (integer) — checks if the value is less than or equal to the given maximum.

Security validations +To improve the Developer eXperience when developing or using the administration panel, the framework enhances the attributes with these "security validations":

  • private (boolean) — if true, the attribute will be removed from the server response (it's useful to hide sensitive data).
  • configurable (boolean) - if false, the attribute isn't configurable from the Content Type Builder plugin.

Example

Path — User.settings.json.

{
+  "connection": "default",
+  "info": {
+    "name": "user",
+    "description": "This represents the User Model",
+    "mainField": "email"
+  },
+  "attributes": {
+    "firstname": {
+      "type": "string"
+    },
+    "lastname": {
+      "type": "string"
+    },
+    "email": {
+      "type": "email",
+      "required": true,
+      "unique": true
+    },
+    "password": {
+      "type": "password",
+      "required": true,
+      "private": true
+    },
+    "about": {
+      "type": "description"
+    },
+    "age": {
+      "type": "integer",
+      "min": 18,
+      "max": 99
+    },
+    "birthday": {
+      "type": "date"
+    }
+  }
+}
+

Relations

Refer to the relations concept for more informations about relations type.

One-way

Refer to the one-way concept for informations.

Example

A pet can be owned by someone (a user).

Path — ./api/pet/models/Pet.settings.json.

{
+  "attributes": {
+    "owner": {
+      "model": "user"
+    }
+  }
+}
+

Path — ./api/pet/controllers/Pet.js.

// Mongoose example
+module.exports = {
+  findPetsWithOwners: async (ctx) => {
+    // Retrieve the list of pets with their owners.
+    const pets = Pet
+      .find()
+      .populate('owner');
+
+    // Send the list of pets.
+    ctx.body = pets;
+  }
+}
+

One-to-one

Refer to the one-to-one concept for informations.

Example

A user can have one address. And this address is only related to this user.

Path — ./api/user/models/User.settings.json.

{
+  "attributes": {
+    "address": {
+      "model": "address",
+      "via": "user"
+    }
+  }
+}
+

Path — ./api/address/models/Address.settings.json.

{
+  "attributes": {
+    "user": {
+      "model": "user"
+    }
+  }
+}
+

Path — ./api/user/controllers/User.js.

// Mongoose example
+module.exports = {
+  findUsersWithAddresses: async (ctx) => {
+    // Retrieve the list of users with their addresses.
+    const users = User
+      .find()
+      .populate('address');
+
+    // Send the list of users.
+    ctx.body = users;
+  }
+}
+

Path — ./api/adress/controllers/Address.js.

// Mongoose example
+module.exports = {
+  findArticlesWithUsers: async (ctx) => {
+    // Retrieve the list of addresses with their users.
+    const articles = Address
+      .find()
+      .populate('user');
+
+    // Send the list of addresses.
+    ctx.body = addresses;
+  }
+}
+

One-to-many

Refer to the one-to-many concept for more informations.

Example

A user can have many articles, and an article can be related to one user (author).

Path — ./api/user/models/User.settings.json.

{
+  "attributes": {
+    "articles": {
+      "collection": "article",
+      "via": "author"
+    }
+  }
+}
+

Path — ./api/article/models/Article.settings.json.

{
+  "attributes": {
+    "author": {
+      "model": "user"
+    }
+  }
+}
+

Path — ./api/user/controllers/User.js.

// Mongoose example
+module.exports = {
+  findUsersWithArticles: async (ctx) => {
+    // Retrieve the list of users with their articles.
+    const users = User
+      .find()
+      .populate('articles');
+
+    // Send the list of users.
+    ctx.body = users;
+  }
+}
+

Path — ./api/article/controllers/Article.js.

// Mongoose example
+module.exports = {
+  findArticlesWithAuthors: async (ctx) => {
+    // Retrieve the list of articles with their authors.
+    const articles = Article
+      .find()
+      .populate('author');
+
+    // Send the list of users.
+    ctx.body = users;
+  }
+}
+

Many-to-many

Refer to the many-to-many concept.

Example

A product can be related to many categories, so a category can have many products.

Path — ./api/product/models/Product.settings.json.

{
+  "attributes": {
+    "categories": {
+      "collection": "category",
+      "via": "products",
+      "dominant": true
+    }
+  }
+}
+

The dominant key allows you to define in which table/collection (only for NoSQL databases) should be stored the array that defines the relationship. Because there is no join table in NoSQL, this key is required for NoSQL databases (ex: MongoDB).

Path — ./api/category/models/Category.settings.json.

{
+  "attributes": {
+    "products": {
+      "collection": "product",
+      "via": "categories"
+    }
+  }
+}
+

Path — ./api/product/controllers/Product.js.

// Mongoose example
+module.exports = {
+  findProductsWithCategories: async (ctx) => {
+    // Retrieve the list of products.
+    const products = Product
+      .find()
+      .populate('categories');
+
+    // Send the list of products.
+    ctx.body = products;
+  }
+}
+

Path — ./api/category/controllers/Category.js.

// Mongoose example
+module.exports = {
+  findCategoriesWithProducts: async (ctx) => {
+    // Retrieve the list of categories.
+    const categories = Category
+      .find()
+      .populate('products');
+
+    // Send the list of categories.
+    ctx.body = categories;
+  }
+}
+

Polymorphic

The polymorphic relationships are the solution when you don't know which kind of model will be associated to your entry. A common use case is an Image model that can be associated to many others kind of models (Article, Product, User, etc).

Refer to the upload plugin polymorphic implementation for more informations.

Single vs Many

Let's stay with our Image model which might belongs to a single Article or Product entry.

In other words, it means that a Image entry can be associated to one entry. This entry can be a Article or Product entry.

Path — ./api/image/models/Image.settings.json.

{
+  "attributes": {
+    "related": {
+      "model": "*",
+      "filter": "field"
+    }
+  }
+}
+

Also, our Image model which might belongs to many Article or Product entries.

In other words, it means that a Article entry can relate to the same image than a Product entry.

Path — ./api/image/models/Image.settings.json.

{
+  "attributes": {
+    "related": {
+      "collection": "*",
+      "filter": "field"
+    }
+  }
+}
+

Filter

The filter attribute is optional (but we highly recommend to use every time). If it's provided it adds a new match level to retrieve the related data.

For example, the Product model might have two attributes which are associated to the Image model. To distinguish which image is attached to the cover field and which images are attached to the pictures field, we need to save and provide this to the database.

Path — ./api/article/models/Product.settings.json.

{
+  "attributes": {
+    "cover": {
+      "model": "image",
+      "via": "related",
+    },
+    "pictures": {
+      "collection": "image",
+      "via": "related"
+    }
+  }
+}
+

The value is the filter attribute is the name of the column where the information is stored.

Example

A Image model might belongs to many either Article models or a Product models.

Path — ./api/image/models/Image.settings.json.

{
+  "attributes": {
+    "related": {
+      "collection": "*",
+      "filter": "field"
+    }
+  }
+}
+

Path — ./api/article/models/Article.settings.json.

{
+  "attributes": {
+    "avatar": {
+      "model": "image",
+      "via": "related"
+    }
+  }
+}
+

Path — ./api/article/models/Product.settings.json.

{
+  "attributes": {
+    "pictures": {
+      "collection": "image",
+      "via": "related"
+    }
+  }
+}
+

Path — ./api/image/controllers/Image.js.

// Mongoose example
+module.exports = {
+  findFiles: async (ctx) => {
+    // Retrieve the list of images with the Article or Product entries related to them.
+    const images = Images
+      .find()
+      .populate('related');
+
+    /*
+    [{
+      "_id": "5a81b0fa8c063a53298a934a",
+      "url": "http://....",
+      "name": "john_doe_avatar.png",
+      "related": [{
+        "_id": "5a81b0fa8c063a5393qj934a",
+        "title": "John Doe is awesome",
+        "description": "..."
+      }, {
+        "_id": "5a81jei389ns5abd75f79c",
+        "name": "A simple chair",
+        "description": "..."
+      }]
+    }]
+    */
+
+    // Send the list of files.
+    ctx.body = images;
+  }
+}
+

Path — ./api/article/controllers/Article.js.

// Mongoose example
+module.exports = {
+  findArticlesWithAvatar: async (ctx) => {
+    // Retrieve the list of articles with the avatar (image).
+    const articles = Article
+      .find()
+      .populate('avatar');
+
+    /*
+    [{
+      "_id": "5a81b0fa8c063a5393qj934a",
+      "title": "John Doe is awesome",
+      "description": "...",
+      "avatar": {
+        "_id": "5a81b0fa8c063a53298a934a",
+        "url": "http://....",
+        "name": "john_doe_avatar.png"
+      }
+    }]
+    */
+
+    // Send the list of users.
+    ctx.body = articles;
+  }
+}
+

Path — ./api/product/controllers/Product.js.

// Mongoose example
+module.exports = {
+  findProductWithPictures: async (ctx) => {
+    // Retrieve the list of products with the pictures (images).
+    const products = Product
+      .find()
+      .populate('pictures');
+
+    /*
+    [{
+      "_id": "5a81jei389ns5abd75f79c",
+      "name": "A simple chair",
+      "description": "...",
+      "pictures": [{
+        "_id": "5a81b0fa8c063a53298a934a",
+        "url": "http://....",
+        "name": "chair_position_1.png"
+      }, {
+        "_id": "5a81d22bee1ad45abd75f79c",
+        "url": "http://....",
+        "name": "chair_position_2.png"
+      }, {
+        "_id": "5a81d232ee1ad45abd75f79e",
+        "url": "http://....",
+        "name": "chair_position_3.png"
+      }]
+    }]
+    */
+
+    // Send the list of users.
+    ctx.body = products;
+  }
+}
+

Database implementation

If you're using MongoDB as a database, you don't need to do anything. Everything is natively handled by Strapi. However, to implement a polymorphic relationship with SQL databases, you need to create two tables.

Path — ./api/image/models/Image.settings.json.

{
+  "attributes": {
+    "name": {
+      "type": "string"
+    },
+    "url": {
+      "type": "string"
+    },
+    "related": {
+      "collection": "*",
+      "filter": "field"
+    }
+  }
+}
+

The first table to create is the table which has the same name as your model.

CREATE TABLE `image` (
+  `id` int(11) NOT NULL,
+  `name` text NOT NULL,
+  `text` text NOT NULL
+)
+

If you've overrided the default table name given by Strapi by using the collectionName attribute. Use the value set in the collectionName to name the table.

The second table will allow us to associate one or many others entries to the Image model. The name of the table is the same as the previous one with the suffix _morph.

CREATE TABLE `image_morph` (
+  `id` int(11) NOT NULL,
+  `image_id` int(11) NOT NULL,
+  `related_id` int(11) NOT NULL,
+  `related_type` text NOT NULL,
+  `field` text NOT NULL
+)
+
  • image_id is using the name of the first table with the suffix _id. +
    • Attempted value: It correspond to the id of an Image entry.
  • related_id is using the attribute name where the relation happens with the suffix _id. +
    • Attempted value: It correspond to the id of an Article or Product entry.
  • related_type is using the attribute name where the relation happens with the suffix _type. +
    • Attempted value: It correspond to the table name where the Article or Product entry is stored.
  • field is using the filter property value defined in the model. If you change the filter value, you have to change the name of this column as well. +
    • Attempted value: It correspond to the attribute of a Article, Product with which the Image entry is related.
id image_id related_id related_type field
1 1738 39 product cover
2 4738 58 article avatar
3 1738 71 article avatar

Lifecycle callbacks

Refer to the lifecycle callbacks concepts for informations.

The following events are available by default:

Callbacks on save:

  • beforeSave
  • afterSave

Callbacks on fetch:

  • beforeFetch
  • afterFetch

Callbacks on fetchAll:

  • beforeFetchAll
  • afterFetchAll

Callbacks on create:

  • beforeCreate
  • afterCreate

Callbacks on update:

  • beforeUpdate
  • afterUpdate

Callbacks on destroy:

  • beforeDestroy
  • afterDestroy

Mongoose

The entry is available through the model parameter

Path — ./api/user/models/User.js.

module.exports = {
+ /**
+  * Triggered before user creation.
+  */
+ beforeCreate: async (model) => {
+   // Hash password.
+   const passwordHashed = await strapi.api.user.services.user.hashPassword(model.password);
+
+   // Set the password.
+   model.password = passwordHashed;
+ }
+}
+

Bookshelf

Each of these functions receives a three parameters model, attrs and options. You have to return a Promise.

Path — ./api/user/models/User.js.

module.exports = {
+
+  /**
+   * Triggered before user creation.
+   */
+  beforeCreate: async (model, attrs, options) => {
+    // Hash password.
+    const passwordHashed = await strapi.api.user.services.user.hashPassword(model.attributes.password);
+
+    // Set the password.
+    model.set('password', passwordHashed);
+  }
+}
+

Settings

Additional settings can be set on models:

  • connection (string) - Connection's name which must be used. Default value: default.
  • collectionName (string) - Collection's name (or table's name) in which the data should be stored.
  • globalId (string) -Global variable name for this model (case-sensitive).

Path — User.settings.json.

{
+  "connection": "mongo",
+  "collectionName": "Users_v1",
+  "globalId": "Users",
+  "attributes": {
+
+  }
+}
+

In this example, the model User will be accessible through the Users global variable. The data will be stored in the Users_v1 collection or table and the model will use the mongo connection defined in ./config/environments/**/database.json

The connection value can be changed whenever you want, but you should be aware that there is no automatic data migration process. Also if the new connection doesn't use the same ORM you will have to rewrite your queries.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/policies.html b/docs/.vuepress/dist/3.x.x/guides/policies.html new file mode 100644 index 0000000000..98ef634a91 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/policies.html @@ -0,0 +1,97 @@ + + + + + + Policies | Strapi Docs + + + + + + + +

Policies

See the policies' concepts for details.

How to create a policy?

There are several ways to create a policy.

  • Using the CLI strapi generate:policy isAuthenticated. Read the CLI documentation for more information.
  • Manually create a JavaScript file named isAuthenticated.js in ./config/policies/.

Path — ./config/policies/isAuthenticated.js.

module.exports = async (ctx, next) => {
+  if (ctx.state.user) {
+    // Go to next policy or will reach the controller's action.
+    return await next();
+  }
+
+  ctx.unauthorized(`You're not logged in!`);
+};
+

In this example, we are verifying that a session is open. If it is the case, we call the next() method that will execute the next policy or controller's action. Otherwise, a 401 error is returned.

You can access to any controllers, services or models thanks to the global variable strapi in a policy.

Usage

To apply policies to a route, you need to associate an array of policies to it. As explained in the policies' concepts, there are two kinds of policies: global or scoped.

Global policies

Refer to the concept for details.

The global policies can be associated to any routes in your project.

Path — ./api/car/routes.json.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/car",
+      "handler": "Car.find",
+      "config": {
+        "policies": [
+          "global.isAuthenticated"
+        ]
+      }
+    }
+  ]
+}
+

Before executing the find action in the Car.js controller, the global policy isAuthenticated located in ./config/policies/isAuthenticated.js will be called.

You can put as much policy you want in this array. However be careful about the performance impact.

Plugins policies

Plugins can add and expose policies into your app. For example, the plugin Auth (COMING SOON) comes with several useful policies to ensure that the user is well authenticated or has the rights to perform an action.

Path — ./api/car/config/routes.json.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/car",
+      "handler": "Car.find",
+      "config": {
+        "policies": [
+          "plugins.auth.isAuthenticated"
+        ]
+      }
+    }
+  ]
+}
+

The policy isAuthenticated located in ./plugins/auth/config/policies/isAuthenticated.js will be executed before the find action in the Car.js controller.

Scoped Policies

The scoped policies can only be associated to the routes defined in the API where they have been declared.

Path — ./api/car/config/policies/isAdmin.js.

module.exports = async (ctx, next) => {
+  if (ctx.state.user.role.name === 'Administrator') {
+    // Go to next policy or will reach the controller's action.
+    return await next();
+  }
+
+  ctx.unauthorized(`You're not allowed to perform this action!`);
+};
+

Path — ./api/car/config/routes.json.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/car",
+      "handler": "Car.find",
+      "config": {
+        "policies": [
+          "isAdmin"
+        ]
+      }
+    }
+  ]
+}
+

The policy isAdmin located in ./api/car/config/policies/isAdmin.js will be executed before the find action in the Car.js controller.

The policy isAdmin can only be applied to the routes defined in the /api/car folder.

Advanced usage

As it's explained above, the policies are executed before the controller's action. It looks like an action that you can make before the controller's action. You can also execute a logic after.

Path — ./config/policies/custom404.js.

module.exports = async (ctx, next) => {
+  // Indicate to the server to go to
+  // the next policy or to the controller's action.
+  await next();
+
+  // The code below will be executed after the controller's action.
+  if (ctx.status === 404) {
+    ctx.body = 'We cannot find the ressource.';
+  }
+};
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/public-assets.html b/docs/.vuepress/dist/3.x.x/guides/public-assets.html new file mode 100644 index 0000000000..8029752ab9 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/public-assets.html @@ -0,0 +1,29 @@ + + + + + + Public Assets | Strapi Docs + + + + + + + +

Public Assets

See the public assets concepts for details.

Because an API may need to serve static assets, every new Strapi project includes by default, a folder named /public. Any file located in this directory is accessible if the request's path doesn't match any other defined route and if it matches a public file name.

Example

An image named company-logo.png in ./public/ is accessible through /company-logo.png URL.

index.html files are served if the request corresponds to a folder name (/pictures url will try to serve public/pictures/index.html file).

WARNING

The dotfiles are not exposed. It means that every files with the names start by . such as .htaccess or .gitignore are not served.

Refer to the public assets configurations for more informations.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/requests.html b/docs/.vuepress/dist/3.x.x/guides/requests.html new file mode 100644 index 0000000000..9fb485a8f9 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/requests.html @@ -0,0 +1,164 @@ + + + + + + Request | Strapi Docs + + + + + + + +

Request

See the requests concepts for details.

The context object (ctx) contains all the requests related informations. They are accessible through ctx.request, from controllers and policies.

API Reference

For more information, please refer to the Koa request documentation.

request.header

Request header object.

request.header=

Set request header object.

request.headers

Request header object. Alias as request.header.

request.headers=

Set request header object. Alias as request.header=.

request.method

Request method.

request.method=

Set request method, useful for implementing middleware +such as methodOverride().

request.length

Return request Content-Length as a number when present, or undefined.

request.url

Get request URL.

request.url=

Set request URL, useful for url rewrites.

request.originalUrl

Get request original URL.

request.origin

Get origin of URL, include protocol and host.

ctx.request.origin
+// => http://example.com
+

request.href

Get full request URL, include protocol, host and url.

ctx.request.href;
+// => http://example.com/foo/bar?q=1
+

request.path

Get request pathname.

request.path=

Set request pathname and retain query-string when present.

request.querystring

Get raw query string void of ?.

request.querystring=

Set raw query string.

Get raw query string with the ?.

request.search=

Set raw query string.

request.host

Get host (hostname:port) when present. Supports X-Forwarded-Host +when app.proxy is true, otherwise Host is used.

request.hostname

Get hostname when present. Supports X-Forwarded-Host +when app.proxy is true, otherwise Host is used.

If host is IPv6, Koa delegates parsing to +WHATWG URL API, +Note This may impact performance.

request.URL

Get WHATWG parsed URL object.

request.type

Get request Content-Type void of parameters such as "charset".

const ct = ctx.request.type;
+// => "image/png"
+

request.charset

Get request charset when present, or undefined:

ctx.request.charset;
+// => "utf-8"
+

request.query

Get parsed query-string, returning an empty object when no +query-string is present. Note that this getter does not +support nested parsing.

For example "color=blue&size=small":

{
+  color: 'blue',
+  size: 'small'
+}
+

request.query=

Set query-string to the given object. Note that this +setter does not support nested objects.

ctx.query = { next: '/login' };
+

request.fresh

Check if a request cache is "fresh", aka the contents have not changed. This +method is for cache negotiation between If-None-Match / ETag, and If-Modified-Since and Last-Modified. It should be referenced after setting one or more of these response headers.

// freshness check requires status 20x or 304
+ctx.status = 200;
+ctx.set('ETag', '123');
+
+// cache is ok
+if (ctx.fresh) {
+  ctx.status = 304;
+  return;
+}
+
+// cache is stale
+// fetch new data
+ctx.body = await db.find('something');
+

request.stale

Inverse of request.fresh.

request.protocol

Return request protocol, "https" or "http". Supports X-Forwarded-Proto +when app.proxy is true.

request.secure

Shorthand for ctx.protocol == "https" to check if a request was +issued via TLS.

request.ip

Request remote address. Supports X-Forwarded-For when app.proxy +is true.

request.ips

When X-Forwarded-For is present and app.proxy is enabled an array +of these ips is returned, ordered from upstream -> downstream. When disabled +an empty array is returned.

request.subdomains

Return subdomains as an array.

Subdomains are the dot-separated parts of the host before the main domain of +the app. By default, the domain of the app is assumed to be the last two +parts of the host. This can be changed by setting app.subdomainOffset.

For example, if the domain is "tobi.ferrets.example.com": +If app.subdomainOffset is not set, ctx.subdomains is ["ferrets", "tobi"]. +If app.subdomainOffset is 3, ctx.subdomains is ["tobi"].

request.is(types...)

Check if the incoming request contains the "Content-Type" +header field, and it contains any of the give mime types. +If there is no request body, null is returned. +If there is no content type, or the match fails false is returned. +Otherwise, it returns the matching content-type.

// With Content-Type: text/html; charset=utf-8
+ctx.is('html'); // => 'html'
+ctx.is('text/html'); // => 'text/html'
+ctx.is('text/*', 'text/html'); // => 'text/html'
+
+// When Content-Type is application/json
+ctx.is('json', 'urlencoded'); // => 'json'
+ctx.is('application/json'); // => 'application/json'
+ctx.is('html', 'application/*'); // => 'application/json'
+
+ctx.is('html'); // => false
+

For example if you want to ensure that +only images are sent to a given route:

if (ctx.is('image/*')) {
+// process
+} else {
+  ctx.throw(415, 'images only!');
+}
+

Content Negotiation

Koa's request object includes helpful content negotiation utilities powered by accepts and negotiator. These utilities are:

  • request.accepts(types)
  • request.acceptsEncodings(types)
  • request.acceptsCharsets(charsets)
  • request.acceptsLanguages(langs)

If no types are supplied, all acceptable types are returned.

If multiple types are supplied, the best match will be returned. If no matches are found, a false is returned, and you should send a 406 "Not Acceptable" response to the client.

In the case of missing accept headers where any type is acceptable, the first type will be returned. Thus, the order of types you supply is important.

request.accepts(types)

Check if the given type(s) is acceptable, returning the best match when true, otherwise false. The type value may be one or more mime type string +such as "application/json", the extension name +such as "json", or an array ["json", "html", "text/plain"].

// Accept: text/html
+ctx.accepts('html');
+// => "html"
+
+// Accept: text/*, application/json
+ctx.accepts('html');
+// => "html"
+ctx.accepts('text/html');
+// => "text/html"
+ctx.accepts('json', 'text');
+// => "json"
+ctx.accepts('application/json');
+// => "application/json"
+
+// Accept: text/*, application/json
+ctx.accepts('image/png');
+ctx.accepts('png');
+// => false
+
+// Accept: text/*;q=.5, application/json
+ctx.accepts(['html', 'json']);
+ctx.accepts('html', 'json');
+// => "json"
+
+// No Accept header
+ctx.accepts('html', 'json');
+// => "html"
+ctx.accepts('json', 'html');
+// => "json"
+

You may call ctx.accepts() as many times as you like, +or use a switch:

switch (ctx.accepts('json', 'html', 'text')) {
+  case 'json': break;
+  case 'html': break;
+  case 'text': break;
+  default: ctx.throw(406, 'json, html, or text only');
+}
+

request.acceptsEncodings(encodings)

Check if encodings are acceptable, returning the best match when true, otherwise false. Note that you should include identity as one of the encodings!

// Accept-Encoding: gzip
+ctx.acceptsEncodings('gzip', 'deflate', 'identity');
+// => "gzip"
+
+ctx.acceptsEncodings(['gzip', 'deflate', 'identity']);
+// => "gzip"
+

When no arguments are given all accepted encodings +are returned as an array:

// Accept-Encoding: gzip, deflate
+ctx.acceptsEncodings();
+// => ["gzip", "deflate", "identity"]
+

Note that the identity encoding (which means no encoding) could be unacceptable if the client explicitly sends identity;q=0. Although this is an edge case, you should still handle the case where this method returns false.

request.acceptsCharsets(charsets)

Check if charsets are acceptable, returning +the best match when true, otherwise false.

// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5
+ctx.acceptsCharsets('utf-8', 'utf-7');
+// => "utf-8"
+
+ctx.acceptsCharsets(['utf-7', 'utf-8']);
+// => "utf-8"
+

When no arguments are given all accepted charsets +are returned as an array:

// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5
+ctx.acceptsCharsets();
+// => ["utf-8", "utf-7", "iso-8859-1"]
+

request.acceptsLanguages(langs)

Check if langs are acceptable, returning +the best match when true, otherwise false.

// Accept-Language: en;q=0.8, es, pt
+ctx.acceptsLanguages('es', 'en');
+// => "es"
+
+ctx.acceptsLanguages(['en', 'es']);
+// => "es"
+

When no arguments are given all accepted languages +are returned as an array:

// Accept-Language: en;q=0.8, es, pt
+ctx.acceptsLanguages();
+// => ["es", "pt", "en"]
+

request.idempotent

Check if the request is idempotent.

request.socket

Return the request socket.

request.get(field)

Return request header.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/responses.html b/docs/.vuepress/dist/3.x.x/guides/responses.html new file mode 100644 index 0000000000..23997ca95b --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/responses.html @@ -0,0 +1,365 @@ + + + + + + Responses | Strapi Docs + + + + + + + +

Responses

See the responses concepts for details.

API Reference

For more information, please refer to the Koa response documentation.

Context Response

The context object (ctx) contains a list of values and functions useful to manage server responses. They are accessible through ctx.response, from controllers and policies.

response.header

Response header object.

response.headers

Response header object. Alias as response.header.

response.socket

Request socket.

response.status

Get response status. By default, response.status is set to 404 unlike node's res.statusCode which defaults to 200.

response.status=

Set response status via numeric code:

  • 100 "continue"
  • 101 "switching protocols"
  • 102 "processing"
  • 200 "ok"
  • 201 "created"
  • 202 "accepted"
  • 203 "non-authoritative information"
  • 204 "no content"
  • 205 "reset content"
  • 206 "partial content"
  • 207 "multi-status"
  • 208 "already reported"
  • 226 "im used"
  • 300 "multiple choices"
  • 301 "moved permanently"
  • 302 "found"
  • 303 "see other"
  • 304 "not modified"
  • 305 "use proxy"
  • 307 "temporary redirect"
  • 308 "permanent redirect"
  • 400 "bad request"
  • 401 "unauthorized"
  • 402 "payment required"
  • 403 "forbidden"
  • 404 "not found"
  • 405 "method not allowed"
  • 406 "not acceptable"
  • 407 "proxy authentication required"
  • 408 "request timeout"
  • 409 "conflict"
  • 410 "gone"
  • 411 "length required"
  • 412 "precondition failed"
  • 413 "payload too large"
  • 414 "uri too long"
  • 415 "unsupported media type"
  • 416 "range not satisfiable"
  • 417 "expectation failed"
  • 418 "I'm a teapot"
  • 422 "unprocessable entity"
  • 423 "locked"
  • 424 "failed dependency"
  • 426 "upgrade required"
  • 428 "precondition required"
  • 429 "too many requests"
  • 431 "request header fields too large"
  • 500 "internal server error"
  • 501 "not implemented"
  • 502 "bad gateway"
  • 503 "service unavailable"
  • 504 "gateway timeout"
  • 505 "http version not supported"
  • 506 "variant also negotiates"
  • 507 "insufficient storage"
  • 508 "loop detected"
  • 510 "not extended"
  • 511 "network authentication required"

NOTE: don't worry too much about memorizing these strings, +if you have a typo an error will be thrown, displaying this list +so you can make a correction.

response.message

Get response status message. By default, response.message is +associated with response.status.

response.message=

Set response status message to the given value.

response.length=

Set response Content-Length to the given value.

response.length

Return response Content-Length as a number when present, or deduce +from ctx.body when possible, or undefined.

response.body

Get response body.

response.body=

Set response body to one of the following:

  • string written
  • Buffer written
  • Stream piped
  • Object || Array json-stringified
  • null no content response

If response.status has not been set, Koa will automatically set the status to 200 or 204.

String

The Content-Type is defaulted to text/html or text/plain, both with +a default charset of utf-8. The Content-Length field is also set.

Buffer

The Content-Type is defaulted to application/octet-stream, and Content-Length +is also set.

Stream

The Content-Type is defaulted to application/octet-stream.

Whenever a stream is set as the response body, .onerror is automatically added as a listener to the error event to catch any errors. +In addition, whenever the request is closed (even prematurely), the stream is destroyed. +If you do not want these two features, do not set the stream as the body directly. +For example, you may not want this when setting the body as an HTTP stream in a proxy as it would destroy the underlying connection.

See: https://github.com/koajs/koa/pull/612 for more information.

Here's an example of stream error handling without automatically destroying the stream:

const PassThrough = require('stream').PassThrough;
+
+app.use(async ctx => {
+  ctx.body = someHTTPStream.on('error', ctx.onerror).pipe(PassThrough());
+});
+
Object

The Content-Type is defaulted to application/json. This includes plain objects { foo: 'bar' } and arrays ['foo', 'bar'].

response.get(field)

Get a response header field value with case-insensitive field.

const etag = ctx.response.get('ETag');
+

response.set(field, value)

Set response header field to value:

ctx.set('Cache-Control', 'no-cache');
+

response.append(field, value)

Append additional header field with value val.

ctx.append('Link', '<http://127.0.0.1/>');
+

response.set(fields)

Set several response header fields with an object:

ctx.set({
+  'Etag': '1234',
+  'Last-Modified': date
+});
+

response.remove(field)

Remove header field.

response.type

Get response Content-Type void of parameters such as "charset".

const ct = ctx.type;
+// => "image/png"
+

response.type=

Set response Content-Type via mime string or file extension.

ctx.type = 'text/plain; charset=utf-8';
+ctx.type = 'image/png';
+ctx.type = '.png';
+ctx.type = 'png';
+

when appropriate a charset is selected for you, for +example response.type = 'html' will default to "utf-8". If you need to overwrite charset, +use ctx.set('Content-Type', 'text/html') to set response header field to value directly.

response.is(types...)

Very similar to ctx.request.is(). +Check whether the response type is one of the supplied types. +This is particularly useful for creating middleware that +manipulate responses.

For example, this is a middleware that minifies +all HTML responses except for streams.

const minify = require('html-minifier');
+
+app.use(async (ctx, next) => {
+await next();
+
+if (!ctx.response.is('html')) return;
+
+let body = ctx.body;
+if (!body || body.pipe) return;
+
+if (Buffer.isBuffer(body)) body = body.toString();
+  ctx.body = minify(body);
+});
+

response.redirect(url, [alt])

Perform a [302] redirect to url.

The string "back" is special-cased +to provide Referrer support, when Referrer +is not present alt or "/" is used.

ctx.redirect('back');
+ctx.redirect('back', '/index.html');
+ctx.redirect('/login');
+ctx.redirect('http://google.com');
+

To alter the default status of 302, simply assign the status +before or after this call. To alter the body, assign it after this call:

ctx.status = 301;
+ctx.redirect('/cart');
+ctx.body = 'Redirecting to shopping cart';
+

response.attachment([filename])

Set Content-Disposition to "attachment" to signal the client +to prompt for download. Optionally specify the filename of the +download.

response.headerSent

Check if a response header has already been sent. Useful for seeing +if the client may be notified on error.

response.lastModified

Return the Last-Modified header as a Date, if it exists.

response.lastModified=

Set the Last-Modified header as an appropriate UTC string. +You can either set it as a Date or date string.

ctx.response.lastModified = new Date();
+

response.etag=

Set the ETag of a response including the wrapped "s. +Note that there is no corresponding response.etag getter.

ctx.response.etag = crypto.createHash('md5').update(ctx.body).digest('hex');
+

response.vary(field)

Vary on field.

response.flushHeaders()

Flush any set headers, and begin the body.

Response

A Koa Response object is an abstraction on top of node's vanilla response object, +providing additional functionality that is useful for every day HTTP server +development.

API

response.header

Response header object.

response.headers

Response header object. Alias as response.header.

response.socket

Request socket.

response.status

Get response status. By default, response.status is set to 404 unlike node's res.statusCode which defaults to 200.

response.status=

Set response status via numeric code:

  • 100 "continue"
  • 101 "switching protocols"
  • 102 "processing"
  • 200 "ok"
  • 201 "created"
  • 202 "accepted"
  • 203 "non-authoritative information"
  • 204 "no content"
  • 205 "reset content"
  • 206 "partial content"
  • 207 "multi-status"
  • 208 "already reported"
  • 226 "im used"
  • 300 "multiple choices"
  • 301 "moved permanently"
  • 302 "found"
  • 303 "see other"
  • 304 "not modified"
  • 305 "use proxy"
  • 307 "temporary redirect"
  • 308 "permanent redirect"
  • 400 "bad request"
  • 401 "unauthorized"
  • 402 "payment required"
  • 403 "forbidden"
  • 404 "not found"
  • 405 "method not allowed"
  • 406 "not acceptable"
  • 407 "proxy authentication required"
  • 408 "request timeout"
  • 409 "conflict"
  • 410 "gone"
  • 411 "length required"
  • 412 "precondition failed"
  • 413 "payload too large"
  • 414 "uri too long"
  • 415 "unsupported media type"
  • 416 "range not satisfiable"
  • 417 "expectation failed"
  • 418 "I'm a teapot"
  • 422 "unprocessable entity"
  • 423 "locked"
  • 424 "failed dependency"
  • 426 "upgrade required"
  • 428 "precondition required"
  • 429 "too many requests"
  • 431 "request header fields too large"
  • 500 "internal server error"
  • 501 "not implemented"
  • 502 "bad gateway"
  • 503 "service unavailable"
  • 504 "gateway timeout"
  • 505 "http version not supported"
  • 506 "variant also negotiates"
  • 507 "insufficient storage"
  • 508 "loop detected"
  • 510 "not extended"
  • 511 "network authentication required"

NOTE: don't worry too much about memorizing these strings, +if you have a typo an error will be thrown, displaying this list +so you can make a correction.

response.message

Get response status message. By default, response.message is +associated with response.status.

response.message=

Set response status message to the given value.

response.length=

Set response Content-Length to the given value.

response.length

Return response Content-Length as a number when present, or deduce +from ctx.body when possible, or undefined.

response.body

Get response body.

response.body=

Set response body to one of the following:

  • string written
  • Buffer written
  • Stream piped
  • Object || Array json-stringified
  • null no content response

If response.status has not been set, Koa will automatically set the status to 200 or 204.

String

The Content-Type is defaulted to text/html or text/plain, both with +a default charset of utf-8. The Content-Length field is also set.

Buffer

The Content-Type is defaulted to application/octet-stream, and Content-Length +is also set.

Stream

The Content-Type is defaulted to application/octet-stream.

Whenever a stream is set as the response body, .onerror is automatically added as a listener to the error event to catch any errors. +In addition, whenever the request is closed (even prematurely), the stream is destroyed. +If you do not want these two features, do not set the stream as the body directly. +For example, you may not want this when setting the body as an HTTP stream in a proxy as it would destroy the underlying connection.

See: https://github.com/koajs/koa/pull/612 for more information.

Here's an example of stream error handling without automatically destroying the stream:

const PassThrough = require('stream').PassThrough;
+
+app.use(async ctx => {
+  ctx.body = someHTTPStream.on('error', ctx.onerror).pipe(PassThrough());
+});
+
Object

The Content-Type is defaulted to application/json. This includes plain objects { foo: 'bar' } and arrays ['foo', 'bar'].

response.get(field)

Get a response header field value with case-insensitive field.

const etag = ctx.response.get('ETag');
+

response.set(field, value)

Set response header field to value:

ctx.set('Cache-Control', 'no-cache');
+

response.append(field, value)

Append additional header field with value val.

ctx.append('Link', '<http://127.0.0.1/>');
+

response.set(fields)

Set several response header fields with an object:

ctx.set({
+  'Etag': '1234',
+  'Last-Modified': date
+});
+

response.remove(field)

Remove header field.

response.type

Get response Content-Type void of parameters such as "charset".

const ct = ctx.type;
+// => "image/png"
+

response.type=

Set response Content-Type via mime string or file extension.

ctx.type = 'text/plain; charset=utf-8';
+ctx.type = 'image/png';
+ctx.type = '.png';
+ctx.type = 'png';
+

when appropriate a charset is selected for you, for +example response.type = 'html' will default to "utf-8". If you need to overwrite charset, +use ctx.set('Content-Type', 'text/html') to set response header field to value directly.

response.is(types...)

Very similar to ctx.request.is(). +Check whether the response type is one of the supplied types. +This is particularly useful for creating middleware that +manipulate responses.

For example, this is a middleware that minifies +all HTML responses except for streams.

const minify = require('html-minifier');
+
+app.use(async (ctx, next) => {
+await next();
+
+if (!ctx.response.is('html')) return;
+
+let body = ctx.body;
+if (!body || body.pipe) return;
+
+if (Buffer.isBuffer(body)) body = body.toString();
+  ctx.body = minify(body);
+});
+

response.redirect(url, [alt])

Perform a [302] redirect to url.

The string "back" is special-cased +to provide Referrer support, when Referrer +is not present alt or "/" is used.

ctx.redirect('back');
+ctx.redirect('back', '/index.html');
+ctx.redirect('/login');
+ctx.redirect('http://google.com');
+

To alter the default status of 302, simply assign the status +before or after this call. To alter the body, assign it after this call:

ctx.status = 301;
+ctx.redirect('/cart');
+ctx.body = 'Redirecting to shopping cart';
+

response.attachment([filename])

Set Content-Disposition to "attachment" to signal the client +to prompt for download. Optionally specify the filename of the +download.

response.headerSent

Check if a response header has already been sent. Useful for seeing +if the client may be notified on error.

response.lastModified

Return the Last-Modified header as a Date, if it exists.

response.lastModified=

Set the Last-Modified header as an appropriate UTC string. +You can either set it as a Date or date string.

ctx.response.lastModified = new Date();
+

response.etag=

Set the ETag of a response including the wrapped "s. +Note that there is no corresponding response.etag getter.

ctx.response.etag = crypto.createHash('md5').update(ctx.body).digest('hex');
+

response.vary(field)

Vary on field.

response.flushHeaders()

Flush any set headers, and begin the body.

Advanced responses

Strapi integrates Boom: a set of utilities for returning HTTP errors. Every Boom’s functions are accessible through the ctx.response.

You can also override responses based on them status. Please read the configuration responses for that.

Every Boom's functions is delegated to the context. It means that ctx.notFound is a shortcut to ctx.response.notFound.

API Reference

For more information, please refer to the Boom documentation.

HTTP 4xx Errors

ctx.response.badRequest([message], [data])

Returns a 400 Bad Request error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.badRequest('invalid query');
+

Generates the following response payload:

{
+  "statusCode": 400,
+  "error": "Bad Request",
+  "message": "invalid query"
+}
+

ctx.response.unauthorized([message], [scheme], [attributes])

Returns a 401 Unauthorized error where:

  • message - optional message.
  • scheme can be one of the following: +
    • an authentication scheme name
    • an array of string values. These values will be separated by ', ' and set to the 'WWW-Authenticate' header.
  • attributes - an object of values to use while setting the 'WWW-Authenticate' header. This value is only used +when scheme is a string, otherwise it is ignored. Every key/value pair will be included in the +'WWW-Authenticate' in the format of 'key="value"' as well as in the response payload under the attributes key. Alternatively value can be a string which is use to set the value of the scheme, for example setting the token value for negotiate header. If string is used message parameter must be null. +null and undefined will be replaced with an empty string. If attributes is set, message will be used as +the 'error' segment of the 'WWW-Authenticate' header. If message is unset, the 'error' segment of the header +will not be present and isMissing will be true on the error object.

If either scheme or attributes are set, the resultant Boom object will have the 'WWW-Authenticate' header set for the response.

ctx.response.unauthorized('invalid password');
+

Generates the following response:

"payload": {
+  "statusCode": 401,
+  "error": "Unauthorized",
+  "message": "invalid password"
+},
+"headers" {}
+
ctx.response.unauthorized('invalid password', 'sample');
+

Generates the following response:

"payload": {
+  "statusCode": 401,
+  "error": "Unauthorized",
+  "message": "invalid password",
+  "attributes": {
+    "error": "invalid password"
+  }
+},
+"headers" {
+  "WWW-Authenticate": "sample error=\"invalid password\""
+}
+
ctx.response.unauthorized(null, 'Negotiate', 'VGhpcyBpcyBhIHRlc3QgdG9rZW4=');
+

Generates the following response:

"payload": {
+  "statusCode": 401,
+  "error": "Unauthorized",
+  "attributes": "VGhpcyBpcyBhIHRlc3QgdG9rZW4="
+},
+"headers" {
+  "WWW-Authenticate": "Negotiate VGhpcyBpcyBhIHRlc3QgdG9rZW4="
+}
+
ctx.response.unauthorized('invalid password', 'sample', { ttl: 0, cache: null, foo: 'bar' });
+

Generates the following response:

"payload": {
+  "statusCode": 401,
+  "error": "Unauthorized",
+  "message": "invalid password",
+  "attributes": {
+    "error": "invalid password",
+    "ttl": 0,
+    "cache": "",
+    "foo": "bar"
+  }
+},
+"headers" {
+  "WWW-Authenticate": "sample ttl=\"0\", cache=\"\", foo=\"bar\", error=\"invalid password\""
+}
+

ctx.response.paymentRequired([message], [data])

Returns a 402 Payment Required error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.paymentRequired('bandwidth used');
+

Generates the following response payload:

{
+  "statusCode": 402,
+  "error": "Payment Required",
+  "message": "bandwidth used"
+}
+

ctx.response.forbidden([message], [data])

Returns a 403 Forbidden error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.forbidden('try again some time');
+

Generates the following response payload:

{
+  "statusCode": 403,
+  "error": "Forbidden",
+  "message": "try again some time"
+}
+

ctx.response.notFound([message], [data])

Returns a 404 Not Found error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.notFound('missing');
+

Generates the following response payload:

{
+  "statusCode": 404,
+  "error": "Not Found",
+  "message": "missing"
+}
+

ctx.response.methodNotAllowed([message], [data], [allow])

Returns a 405 Method Not Allowed error where:

  • message - optional message.
  • data - optional additional error data.
  • allow - optional string or array of strings (to be combined and separated by ', ') which is set to the 'Allow' header.
ctx.response.methodNotAllowed('that method is not allowed');
+

Generates the following response payload:

{
+  "statusCode": 405,
+  "error": "Method Not Allowed",
+  "message": "that method is not allowed"
+}
+

ctx.response.notAcceptable([message], [data])

Returns a 406 Not Acceptable error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.notAcceptable('unacceptable');
+

Generates the following response payload:

{
+  "statusCode": 406,
+  "error": "Not Acceptable",
+  "message": "unacceptable"
+}
+

ctx.response.proxyAuthRequired([message], [data])

Returns a 407 Proxy Authentication Required error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.proxyAuthRequired('auth missing');
+

Generates the following response payload:

{
+  "statusCode": 407,
+  "error": "Proxy Authentication Required",
+  "message": "auth missing"
+}
+

ctx.response.clientTimeout([message], [data])

Returns a 408 Request Time-out error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.clientTimeout('timed out');
+

Generates the following response payload:

{
+  "statusCode": 408,
+  "error": "Request Time-out",
+  "message": "timed out"
+}
+

ctx.response.conflict([message], [data])

Returns a 409 Conflict error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.conflict('there was a conflict');
+

Generates the following response payload:

{
+  "statusCode": 409,
+  "error": "Conflict",
+  "message": "there was a conflict"
+}
+

ctx.response.resourceGone([message], [data])

Returns a 410 Gone error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.resourceGone('it is gone');
+

Generates the following response payload:

{
+  "statusCode": 410,
+  "error": "Gone",
+  "message": "it is gone"
+}
+

ctx.response.lengthRequired([message], [data])

Returns a 411 Length Required error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.lengthRequired('length needed');
+

Generates the following response payload:

{
+  "statusCode": 411,
+  "error": "Length Required",
+  "message": "length needed"
+}
+

ctx.response.preconditionFailed([message], [data])

Returns a 412 Precondition Failed error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.preconditionFailed();
+

Generates the following response payload:

{
+  "statusCode": 412,
+  "error": "Precondition Failed"
+}
+

ctx.response.entityTooLarge([message], [data])

Returns a 413 Request Entity Too Large error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.entityTooLarge('too big');
+

Generates the following response payload:

{
+  "statusCode": 413,
+  "error": "Request Entity Too Large",
+  "message": "too big"
+}
+

ctx.response.uriTooLong([message], [data])

Returns a 414 Request-URI Too Large error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.uriTooLong('uri is too long');
+

Generates the following response payload:

{
+  "statusCode": 414,
+  "error": "Request-URI Too Large",
+  "message": "uri is too long"
+}
+

ctx.response.unsupportedMediaType([message], [data])

Returns a 415 Unsupported Media Type error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.unsupportedMediaType('that media is not supported');
+

Generates the following response payload:

{
+  "statusCode": 415,
+  "error": "Unsupported Media Type",
+  "message": "that media is not supported"
+}
+

ctx.response.rangeNotSatisfiable([message], [data])

Returns a 416 Requested Range Not Satisfiable error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.rangeNotSatisfiable();
+

Generates the following response payload:

{
+  "statusCode": 416,
+  "error": "Requested Range Not Satisfiable"
+}
+

ctx.response.expectationFailed([message], [data])

Returns a 417 Expectation Failed error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.expectationFailed('expected this to work');
+

Generates the following response payload:

{
+  "statusCode": 417,
+  "error": "Expectation Failed",
+  "message": "expected this to work"
+}
+

ctx.response.teapot([message], [data])

Returns a 418 I'm a Teapot error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.teapot('sorry, no coffee...');
+

Generates the following response payload:

{
+  "statusCode": 418,
+  "error": "I'm a Teapot",
+  "message": "Sorry, no coffee..."
+}
+

ctx.response.badData([message], [data])

Returns a 422 Unprocessable Entity error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.badData('your data is bad and you should feel bad');
+

Generates the following response payload:

{
+  "statusCode": 422,
+  "error": "Unprocessable Entity",
+  "message": "your data is bad and you should feel bad"
+}
+

ctx.response.locked([message], [data])

Returns a 423 Locked error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.locked('this resource has been locked');
+

Generates the following response payload:

{
+  "statusCode": 423,
+  "error": "Locked",
+  "message": "this resource has been locked"
+}
+

ctx.response.preconditionRequired([message], [data])

Returns a 428 Precondition Required error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.preconditionRequired('you must supply an If-Match header');
+

Generates the following response payload:

{
+  "statusCode": 428,
+  "error": "Precondition Required",
+  "message": "you must supply an If-Match header"
+}
+

ctx.response.tooManyRequests([message], [data])

Returns a 429 Too Many Requests error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.tooManyRequests('you have exceeded your request limit');
+

Generates the following response payload:

{
+  "statusCode": 429,
+  "error": "Too Many Requests",
+  "message": "you have exceeded your request limit"
+}
+

ctx.response.illegal([message], [data])

Returns a 451 Unavailable For Legal Reasons error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.illegal('you are not permitted to view this resource for legal reasons');
+

Generates the following response payload:

{
+  "statusCode": 451,
+  "error": "Unavailable For Legal Reasons",
+  "message": "you are not permitted to view this resource for legal reasons"
+}
+

HTTP 5xx Errors

All 500 errors hide your message from the end user. Your message is recorded in the server log.

ctx.response.badImplementation([message], [data]) - (alias: internal)

Returns a 500 Internal Server Error error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.badImplementation('terrible implementation');
+

Generates the following response payload:

{
+  "statusCode": 500,
+  "error": "Internal Server Error",
+  "message": "An internal server error occurred"
+}
+

ctx.response.notImplemented([message], [data])

Returns a 501 Not Implemented error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.notImplemented('method not implemented');
+

Generates the following response payload:

{
+  "statusCode": 501,
+  "error": "Not Implemented",
+  "message": "method not implemented"
+}
+

ctx.response.badGateway([message], [data])

Returns a 502 Bad Gateway error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.badGateway('that is a bad gateway');
+

Generates the following response payload:

{
+  "statusCode": 502,
+  "error": "Bad Gateway",
+  "message": "that is a bad gateway"
+}
+

ctx.response.serverUnavailable([message], [data])

Returns a 503 Service Unavailable error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.serverUnavailable('unavailable');
+

Generates the following response payload:

{
+  "statusCode": 503,
+  "error": "Service Unavailable",
+  "message": "unavailable"
+}
+

ctx.response.gatewayTimeout([message], [data])

Returns a 504 Gateway Time-out error where:

  • message - optional message.
  • data - optional additional error data.
ctx.response.gatewayTimeout();
+

Generates the following response payload:

{
+  "statusCode": 504,
+  "error": "Gateway Time-out"
+}
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/restapi.html b/docs/.vuepress/dist/3.x.x/guides/restapi.html new file mode 100644 index 0000000000..1416a63274 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/restapi.html @@ -0,0 +1,49 @@ + + + + + + Filters | Strapi Docs + + + + + + + +

Filters

See the filters' concepts for details.

by default, the filters can only be used from find endpoints generated by the Content Type Builder and the CLI. If you need to implement a filters system somewhere else, read the programmatic usage section.

Available operators

The available operators are separated in four different categories:

Filters

Easily filter results according to fields values.

  • =: Equals
  • _ne: Not equals
  • _lt: Lower than
  • _gt: Greater than
  • _lte: Lower than or equal to
  • _gte: Greater than or equal to
  • _contains: Contains
  • _containss: Contains case sensitive

Examples

Find users having John as first name.

GET /user?firstName=John

Find products having a price equal or greater than 3.

GET /product?price_gte=3

Sort

Sort according to a specific field.

Example

Sort users by email.

  • ASC: GET /user?_sort=email:asc
  • DESC: GET /user?_sort=email:desc

Limit

Limit the size of the returned results.

Example

Limit the result length to 30.

GET /user?_limit=30

Start

Skip a specific number of entries (especially useful for pagination).

Example

Get the second page of results.

GET /user?_start=10&_limit=10

Programmatic usage

Requests system can be implemented in custom code sections.

Extracting requests filters

To extract the filters from an JavaScript object or a request, you need to call the strapi.utils.models.convertParams helper.

The returned objects is formatted according to the ORM used by the model.

Example

Path — ./api/user/controllers/User.js.

// Define a list of params.
+const params = {
+  '_limit': 20,
+  '_sort': 'email'
+};
+
+// Convert params.
+const formattedParams = strapi.utils.models.convertParams('user', params); // { limit: 20, sort: 'email' }
+

Query usage

Example

Path — ./api/user/controllers/User.js.

module.exports = {
+
+  find: async (ctx) => {
+    // Convert params.
+    const formattedParams = strapi.utils.models.convertParams('user', ctx.request.query);
+
+    // Get the list of users according to the request query.
+    const filteredUsers = await User
+      .find()
+      .where(formattedParams.where)
+      .sort(formattedParams.sort)
+      .skip(formattedParams.start)
+      .limit(formattedParams.limit);
+
+    // Finally, send the results to the client.
+    ctx.body = filteredUsers;
+  };
+};
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/routing.html b/docs/.vuepress/dist/3.x.x/guides/routing.html new file mode 100644 index 0000000000..3be7631845 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/routing.html @@ -0,0 +1,68 @@ + + + + + + Routing | Strapi Docs + + + + + + + +

Routing

See the routing's concept for details.

How to create a route?

You have to edit the routes.json file in one of your APIs folders (./api/**/config/routes.json) and manually add a new route object into the routes array.

Path — ./api/**/config/routes.json.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/product",
+      "handler": "Product.find",
+    },
+    {
+      "method": ["POST", "PUT"],
+      "path": "/product/:id",
+      "handler": "Product.createOrUpdate",
+    },
+    {
+      "method": "POST",
+      "path": "/product/:id/buy",
+      "handler": "Product.buy",
+      "config": {
+        "policies": ["isAuthenticated", "hasCreditCard"]
+      }
+    }
+  ]
+}
+
  • method (string): Method or array of methods to hit the route (ex: GET, POST, PUT, HEAD, DELETE, PATCH)
  • path (string): URL starting with / (ex: /product)
  • handler (string): Action to executed when the route is hit following this syntax <Controller>.<action>
  • config
    • policies (array): Array of policies names or path (see more)
    • prefix (string): Set a prefix to this route. Also, it will be loaded into the main router (useful feature for plugin)

Dynamic parameters

The router used by Strapi allows you to create dynamic routes where you can use parameters and simple regular expressions. These parameters will be exposed in the ctx.params object. For more details, please refer to the PathToRegex documentation.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/product/:category/:id",
+      "handler": "Product.findOneByCategory",
+    },
+    {
+      "method": "GET",
+      "path": "/product/:region(\\d{2}|\\d{3})/:id", // Only match when the first parameter contains 2 or 3 digits.
+      "handler": "Product.findOneByRegion",
+    }
+  ]
+}
+

Override default route

By default, the main route of the server / is pointed to the /public/index.html file. To override this behavior, you need to create a route with an empty path / in one of your API folder (/api/**/config/routes.json).

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/",
+      "handler": "Controller.name",
+    }
+  ]
+}
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/services.html b/docs/.vuepress/dist/3.x.x/guides/services.html new file mode 100644 index 0000000000..2767e4f3df --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/services.html @@ -0,0 +1,63 @@ + + + + + + Services | Strapi Docs + + + + + + + +

Services

See the services concept for details.

How to create a service?

There is two ways to create a service.

  • Using the CLI strapi generate:service user. Read the CLI documentation for more information.
  • Manually create a JavaScript file named User.js in ./api/**/services/.

Example

The goal of a service is to store reusable functions. An email service could be useful, if we plan to send emails from different functions in our codebase:

Path — ./api/email/services/Email.js.

const nodemailer = require('nodemailer');
+
+// Create reusable transporter object using SMTP transport.
+const transporter = nodemailer.createTransport({
+  service: 'Gmail',
+  auth: {
+    user: 'user@gmail.com',
+    pass: 'password'
+  }
+});
+
+module.exports = {
+  send: (from, to, subject, text) => {  
+    // Setup e-mail data.
+    const options = {
+      from,
+      to,
+      subject,
+      text
+    };
+
+    // Return a promise of the function that sends the email.
+    return transporter.sendMail(options);
+  }
+};
+

please make sure you installed nodemailer (npm install nodemailer) for this example.

The service is now available through the strapi.services global variable. We can use it in another part of our codebase. For example a controller like below:

Path — ./api/user/controllers/User.js.

module.exports = {
+  // GET /hello
+  signup: async (ctx) => {
+    // Store the new user in database.
+    const user = await User.create(ctx.params);
+
+    // Send an email to validate his subscriptions.
+    strapi.services.email.send('welcome@mysite.com', user.email, 'Welcome', '...');
+
+    // Send response to the server.
+    ctx.send({
+      ok: true
+    });
+  }
+};
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/guides/upload.html b/docs/.vuepress/dist/3.x.x/guides/upload.html new file mode 100644 index 0000000000..538e67dc5c --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/guides/upload.html @@ -0,0 +1,90 @@ + + + + + + File Upload | Strapi Docs + + + + + + + +

File Upload

WARNING

This feature requires the Upload plugin (installed by default).

Thanks to the plugin Upload, you can upload any kind of files on your server or externals providers such as AWS S3.

Usage

The plugin exposes a single route POST /upload to upload one or multiple files in a single request.

WARNING

Please send the request using multipart/form-data encoding

Parameters

  • files: The file(s) to upload. The value(s) can be a Buffer or Stream.
  • refId: (optional): The ID of the entry which the file(s) will be linked to.
  • ref: (optional): The name of the model which the file(s) will be linked to (see more below).
  • source: (optional): The name of the plugin where the model is located.
  • field: (optional): The field of the entry which the file(s) will be precisely linked to.

Models

To add a new file attribute in your models, it's like adding a new association. In the first example, you will be able to upload and attach one file to the avatar attribute. Whereas, in our second example, you can upload and attach multiple pictures to the product.

Path — User.settings.json.

{
+  "connection": "default",
+  "attributes": {
+    "pseudo": {
+      "type": "string",
+      "required": true
+    },
+    "email": {
+      "type": "email",
+      "required": true,
+      "unique": true
+    },
+    "avatar": {
+      "model": "file",
+      "via": "related",
+      "plugin": "upload"
+    }
+  }
+}
+

Path — Product.settings.json.

{
+  "connection": "default",
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true
+    },
+    "price": {
+      "type": "integer",
+      "required": true
+    },
+    "pictures": {
+      "collection": "file",
+      "via": "related",
+      "plugin": "upload"
+    }
+  }
+}
+

Examples

Single file

curl -X POST -F 'files=@/path/to/pictures/file.jpg' http://localhost:1337/upload
+

Multiple files

curl -X POST -F 'files[]=@/path/to/pictures/fileX.jpg' -F 'files[]=@/path/to/pictures/fileY.jpg' http://localhost:1337/upload
+

Linking files to an entry

Let's say that you want to have a User model provided by the plugin Users & Permissions and you want to upload an avatar for a specific user.

{
+  "connection": "default",
+  "attributes": {
+    "pseudo": {
+      "type": "string",
+      "required": true
+    },
+    "email": {
+      "type": "email",
+      "required": true,
+      "unique": true
+    },
+    "avatar": {
+      "model": "file",
+      "via": "related",
+      "plugin": "upload"
+    }
+  }
+}
+
{
+  "files": "...", // Buffer or stream of file(s)
+  "refId": "5a993616b8e66660e8baf45c", // User's Id.
+  "ref": "user", // Model name.
+  "source": "users-permissions", // Plugin name.
+  "field": "avatar" // Field name in the User model.
+}
+

Here the request to make to associate the file (/path/to/pictures/avatar.jpg) to the user (id: 5a993616b8e66660e8baf45c) when the User model is provided by the Users & Permissions plugin.

curl -X POST -F 'files=@/path/to/pictures/avatar.jpg&refId=5a993616b8e66660e8baf45c&ref=user&source=users-permissions&field=avatar' http://localhost:1337/upload
+

Install providers

By default Strapi provides a local file upload system. You might want to upload your files on AWS S3 or another provider.

To install a new provider run:

$ npm install strapi-upload-aws-s3@alpha --save
+

We have two providers available strapi-upload-aws-s3 and strapi-upload-cloudinary, use the alpha tag to install one of them. Then, visit /admin/plugins/upload/configurations/development on your web browser and configure the provider.

If you want to create your own, make sure the name starts with strapi-upload- (duplicating an existing one will be easier to create), modify the auth config object and customize the upload and delete functions.

Check all community providers available on npmjs.org - Providers list

+ + + diff --git a/docs/.vuepress/dist/3.x.x/index.html b/docs/.vuepress/dist/3.x.x/index.html new file mode 100644 index 0000000000..8fa90ef7f6 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/index.html @@ -0,0 +1,32 @@ + + + + + + API creation made simple, secure and fast. | Strapi Docs + + + + + + + +

Logo

API creation made simple, secure and fast.

The most advanced open-source Content Management Framework to build powerful API with no effort.

npm version npm downloads Build status Slack status Heroku Deploy

v3@alpha.13 is available!

We've been working on a major update for Strapi during the past months, rewriting the core framework and the dashboard.

This documentation is only related to Strapi v3@alpha.13 (v1 documentation is still available).

Get Started
+Learn how to install Strapi and start developing your API.

Command Line Interface
+Get to know our CLI to make features the hacker way!

Concepts
+Get to know more about Strapi and how it works.

Guides
+Get familiar with Strapi. Discover concrete examples on how to develop the features you need.

Plugin Development
+Understand how to develop your own plugin.

API Reference
+Learn about Strapi's API, the strapi object that is available in your backend.

Migration guide

+ + + diff --git a/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-10-to-alpha-11.html b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-10-to-alpha-11.html new file mode 100644 index 0000000000..71be5d3882 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-10-to-alpha-11.html @@ -0,0 +1,30 @@ + + + + + + Migrating from 3.0.0-alpha.10 to 3.0.0-alpha.11 | Strapi Docs + + + + + + + +

Migrating from 3.0.0-alpha.10 to 3.0.0-alpha.11

Here are the major changes:

  • Add plugin upload

Feel free to join us on Slack and ask questions about the migration process.

Getting started

Install Strapi alpha.11.1 globally on your computer. To do so run npm install strapi@3.0.0-alpha.11.1 -g.

When it's done, generate a new empty project strapi new myNewProject (don't pay attention to the database configuration).

Configurations

You will have to update just 1 file: package.json

  • Edit the Strapi's dependencies version: (move Strapi's dependencies to 3.0.0-alpha.11.1 version) in package.json file
{
+  "dependencies": {
+    "lodash": "4.x.x",
+    "strapi": "3.0.0-alpha.11.1",
+    "strapi-mongoose": "3.0.0-alpha.11.1"
+  }
+}
+

Update the Admin

Delete your old admin folder and replace it by the new one.

Update the Plugins

Copy this file /plugins/users-permissions/config/jwt.json from your old project and paste it in the corresponding one in your new project.

Copy the fields and relations you had in your /plugins/users-permissions/models/User.settings.json file in the new one.

Then, delete your old plugins folder and replace it by the new one.

Update the Dependencies

Now let's update the dependencies in your package.json we edited earlier. Simply run npm install:

That's all, you have now upgraded to Strapi alpha.11.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-11-to-alpha-12.html b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-11-to-alpha-12.html new file mode 100644 index 0000000000..1e2a8060de --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-11-to-alpha-12.html @@ -0,0 +1,57 @@ + + + + + + Migrating from 3.0.0-alpha.11 to 3.0.0-alpha.12.1.3 | Strapi Docs + + + + + + + +

Migrating from 3.0.0-alpha.11 to 3.0.0-alpha.12.1.3

This migration guide is a mix of migrations from 3.0.0-alpha.11.1 to 3.0.0-alpha.11.2, 3.0.0-alpha.11.2 to 3.0.0-alpha.11.3 and from 3.0.0-alpha.11.3 to 3.0.0-alpha.12.1.3.

Feel free to join us on Slack and ask questions about the migration process.

Getting started

Install Strapi alpha.12.1.3 globally on your computer. To do so run npm install strapi@3.0.0-alpha.12.1.3 -g.

When it's done, generate a new empty project strapi new myNewProject (don't pay attention to the database configuration).

Configurations

You will have to update just 1 file: package.json

  • Edit the Strapi's dependencies version: (move Strapi's dependencies to 3.0.0-alpha.12.1.3 version) in package.json file
{
+  "dependencies": {
+    "lodash": "4.x.x",
+    "strapi": "3.0.0-alpha.12.1.3",
+    "strapi-mongoose": "3.0.0-alpha.12"
+  }
+}
+

Update the Admin

Delete your old admin folder and replace it by the new one.

Update the Plugins

Copy the fields and relations you had in your /plugins/users-permissions/models/User.settings.json file in the new one.

Then, delete your old plugins folder and replace it by the new one.

Update roles

This update is if you come from version before alpha-11.2

Update type of Guest role to public in your database. You can also update name and description:

{
+  "name": "Public",
+  "description": "Default role given to unauthenticated user.",
+  "type": "public"
+}
+

Create Authenticated role:

{
+  "name": "Authenticated",
+  "description": "Default role given to authenticated user.",
+  "type": "authenticated"
+}
+

In Users & Permissions > Advanced in admin panel update default role to Authenticated

You also will have to reset your roles permissions.

Update bookshelf filters

WARNING

This update is if you come from version before alpha-11.3

You will have to replace your fetchAll services queries of your generated API:

_.forEach(convertedParams.where, (where, key) => {
+   if (_.isArray(where.value)) {
+     for (const value in where.value) {
+       qb[value ? 'where' : 'orWhere'](key, where.symbol, where.value[value])
+     }
+   } else {
+     qb.where(key, where.symbol, where.value);
+   }
+ });
+
+ if (convertedParams.sort) {
+   qb.orderBy(convertedParams.sort.key, convertedParams.sort.order);
+ }
+
+ qb.offset(convertedParams.start);
+
+ qb.limit(convertedParams.limit);
+

That's all, you have now upgraded to Strapi alpha.12.1.3.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-7-4-to-alpha-8.html b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-7-4-to-alpha-8.html new file mode 100644 index 0000000000..fca6d2a4b2 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-7-4-to-alpha-8.html @@ -0,0 +1,39 @@ + + + + + + Migrating from 3.0.0-alpha.7.3 to 3.0.0-alpha.8 | Strapi Docs + + + + + + + +

Migrating from 3.0.0-alpha.7.3 to 3.0.0-alpha.8

Here are the major changes:

  • Fix deployment process
  • Setup database connection on project creation
  • Helper for table creation for SQL database

Feel free to join us on Slack and ask questions about the migration process.

Getting started

Install Strapi alpha.8 globally on your computer. To do so run npm install strapi@3.0.0-alpha.8 -g.

When it's done, generate a new empty project strapi new myNewProject (don't pay attention to the database configuration).

Configurations

You will have to update just 1 file: package.json

  • Edit the scripts section: (only the setup line has changed)
{
+  "scripts": {
+    "setup": "cd admin && npm run setup",
+    "start": "node server.js",
+    "strapi": "node_modules/strapi/bin/strapi.js",
+    "lint": "node_modules/.bin/eslint api/**/*.js config/**/*.js plugins/**/*.js",
+    "postinstall": "node node_modules/strapi/lib/utils/post-install.js"
+  }
+}
+
  • Edit the Strapi's dependencies version: (move Strapi's dependencies to 3.0.0-alpha.8 version)
{
+  "dependencies": {
+    "lodash": "4.x.x",
+    "strapi": "3.0.0-alpha.8",
+    "strapi-mongoose": "3.0.0-alpha.8"
+  }
+}
+

Update the Admin

Delete your old admin folder and replace by the new one.

Update the Plugins

Copy these 3 files /plugins/users-permissions/config/jwt.json, /plugins/users-permissions/config/roles.json and /plugins/users-permissions/models/User.settings.json from your old project and paste them in the corresponding ones in your new project. It is important to save these files.

Then, delete your old plugins folder and replace it by the new one.

That's all, you have now upgraded to Strapi alpha.8.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-8-to-alpha-9.html b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-8-to-alpha-9.html new file mode 100644 index 0000000000..ae5ed87441 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-8-to-alpha-9.html @@ -0,0 +1,35 @@ + + + + + + Migrating from 3.0.0-alpha.8 to 3.0.0-alpha.9 | Strapi Docs + + + + + + + +

Migrating from 3.0.0-alpha.8 to 3.0.0-alpha.9

Here are the major changes:

  • Put roles' permissions in database
  • Providers connection (Facebook, GitHub, ...)

Feel free to join us on Slack and ask questions about the migration process.

Getting started

Install Strapi alpha.9 globally on your computer. To do so run npm install strapi@3.0.0-alpha.9 -g.

When it's done, generate a new empty project strapi new myNewProject (don't pay attention to the database configuration).

Configurations

You will have to update just 2 files: package.json and request.json

  • Edit the Strapi's dependencies version: (move Strapi's dependencies to 3.0.0-alpha.9 version) in package.json file
{
+  "dependencies": {
+    "lodash": "4.x.x",
+    "strapi": "3.0.0-alpha.9",
+    "strapi-mongoose": "3.0.0-alpha.9"
+  }
+}
+
  • Edit the session.enabled settings to true in each environment file: /configs/environments/***/request.json
{
+  "session": {
+    "enabled": true
+  }
+}
+

Update the Admin

Delete your old admin folder and replace it by the new one.

Update the Plugins

Copy this file /plugins/users-permissions/config/jwt.json from your old project and paste it in the corresponding one in your new project.

Copy the fields and relations you had in your /plugins/users-permissions/models/User.settings.json file in the new one.

Then, delete your old plugins folder and replace it by the new one.

⚠️ Roles update

Roles are now stored in your database. You will have to re-create and configure them via the admin dashboard.

⚠️ User collection/table name has changed

If you have an existing set of users in your database you will have to rename the collection/table from user to users-permissions_user.

Then update all your users by changing the old role id by the new one which is in users-permissions_role collection/table.

That's all, you have now upgraded to Strapi alpha.9.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-9-to-alpha-10.html b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-9-to-alpha-10.html new file mode 100644 index 0000000000..f896eeb5da --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/migration/migration-guide-alpha-9-to-alpha-10.html @@ -0,0 +1,30 @@ + + + + + + Migrating from 3.0.0-alpha.9 to 3.0.0-alpha.10 | Strapi Docs + + + + + + + +

Migrating from 3.0.0-alpha.9 to 3.0.0-alpha.10

Here are the major changes:

  • Add database store config
  • New lib input

Feel free to join us on Slack and ask questions about the migration process.

Getting started

Install Strapi alpha.10.1 globally on your computer. To do so run npm install strapi@3.0.0-alpha.10.1 -g.

When it's done, generate a new empty project strapi new myNewProject (don't pay attention to the database configuration).

Configurations

You will have to update just 1 file: package.json

  • Edit the Strapi's dependencies version: (move Strapi's dependencies to 3.0.0-alpha.10.1 version) in package.json file
{
+  "dependencies": {
+    "lodash": "4.x.x",
+    "strapi": "3.0.0-alpha.10.1",
+    "strapi-mongoose": "3.0.0-alpha.10.1"
+  }
+}
+

Update the Admin

Delete your old admin folder and replace it by the new one.

Update the Plugins

Copy this file /plugins/users-permissions/config/jwt.json from your old project and paste it in the corresponding one in your new project.

Copy the fields and relations you had in your /plugins/users-permissions/models/User.settings.json file in the new one.

Then, delete your old plugins folder and replace it by the new one.

⚠️ Config in database

To let you update your configurations when your application is deployed on multiple server instances, we have created a data store for settings. So we moved all the users-permissions plugin's configs in database.

You will have to reconfigure all your users-permissions configs from the admin panel. Then delete the advanced.json, email.json and grant.json files from plugins/users-permissions/config folder.

⚠️ Data type Number

We fixed how mongoose handles the model's Number type. Previously, mongoose stored Number type as String and now it's Integer. So you will have to update all your documents which have a type Number in its model and replace their String value with a Number one.

That's all, you have now upgraded to Strapi alpha.10.

+ + + diff --git a/docs/.vuepress/dist/3.x.x/migration/migration-guide.html b/docs/.vuepress/dist/3.x.x/migration/migration-guide.html new file mode 100644 index 0000000000..7558192003 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/migration/migration-guide.html @@ -0,0 +1,265 @@ + + + + + + Migrating from v1 to v3 | Strapi Docs + + + + + + + +

Migrating from v1 to v3

To be honest with all of you, the migration process won't be easy. The new version introduces a lot of breaking changes especially on the query part. Some features are still not available for the moment such as the authentication, users & permissions, email, media upload and GraphQL. If you're using one of theses features, you shouldn't be able to migrate unless you rewrite these features from scratch.

Here are the major changes:

  • Moved from Waterline to specialized ORMs such as Mongoose (MongoDB) and Bookshelf (Postgres, MySQL, Maria, SQLite).
  • New configurations structure.
  • Moved from Koa@1 (generators) to Koa@2 (async functions).
  • Removed middlewares from core (koa-graphql, koa-proxy, koa-ssl, koa-views).
  • Better error handling with Boom.

Feel free to join us on Slack and ask questions about the migration process.

Getting started

The best way to migrate your project is to generate a new empty project using the v3. Then, copy and paste your v1-app/api folder to the new app v3-app/api. The next step is to follow the categories one by one in order and you will be able to migrate your project without issues.

See the Quick start section to install the latest version of Strapi.

Configurations

The structure of the configurations has been harmonised and simplified. Files has been renamed or deleted, and some others has been added.

  • ./config/general.json renamed ./config/application.json
  • ./config/i18n.json renamed ./config/language.json
  • ./config/globals.json removed
  • ./config/studio.json removed
  • ./config/middleware.json added
  • ./config/hook.json added
  • ./config/custom.json added
  • ./config/environments/**/databases.json renamed ./config/environments/**/database.json
  • ./config/environments/**/response.json added
  • ./config/environments/**/custom.json added

Please refer to the new documentation to set the correct values in each file.

Don't forget that middlewares has been removed. Please refers to the right section of this document for more details.

Routes

The format of the routes has changed to easily integrate multiple strategies to hit the controllers' actions. It means that the routes are not REST-limited.

v1.x

{
+  "routes": {
+    "GET /post": {
+      "controller": "Post",
+      "action": "find"
+    },
+    "GET /post/:id": {
+      "controller": "Post",
+      "action": "findOne"
+    },
+    "POST /post": {
+      "controller": "Post",
+      "action": "create"
+    },
+    "PUT /post/:id": {
+      "controller": "Post",
+      "action": "update"
+    },
+    "DELETE /post/:id": {
+      "controller": "Post",
+      "action": "delete"
+    }
+  }
+}
+

v3.x

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/post",
+      "handler": "Post.find",
+    },
+    {
+      "method": "GET",
+      "path": "/post/:id",
+      "handler": "Post.findOne",
+    },
+    {
+      "method": "POST",
+      "path": "/post",
+      "handler": "Post.create",
+    },
+    {
+      "method": "PUT",
+      "path": "/post/:id",
+      "handler": "Post.update",
+    },
+    {
+      "method": "DELETE",
+      "path": "/post/:id",
+      "handler": "Post.delete",
+    }
+  ]
+}
+

Controllers

Koa@1.x.x was based on generators whereas Koa@2.x.x is based on async functions. It means that the yield word has been replaced by the await word. Then the context was passed via the function context itself. Now, the context is passed through the function's parameters. Also, you don't need to apply the try/catch pattern in each controller's actions.

v1.x

module.exports = {
+  find: function *() {
+    try {
+      this.body = yield Post.find(this.params);
+    } catch (error) {
+      this.body = error;
+    }
+  }
+}
+

v3.x

module.exports = {
+  find: async (ctx) => {
+    ctx.body = await Post.find(this.params);
+  }
+}
+

Services

The services files should stay as they are. Your generator functions can be converted into async functions but it shouldn't be necessary.

Models

The models didn't change a lot. The autoCreatedAt, autoUpdatedAt and autoPK attributes have been removed and replaced by the hasTimestamps attribute.

The hasTimestamps options will only work with Bookshelf. Also you need to create the created_at and updated_at columns manually.

The enum type is not available for now. Also, the validations are not working properly. It means that most of the validations have to be done manually.

v1.x

{
+  "identity": "pet",
+  "connection": "mongoDBServer",
+  "schema": true,
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true
+    },
+    "gender": {
+      "type": "string",
+      "enum": ["male", "female"]
+    },
+    "age": {
+      "type": "int",
+      "max": 100
+    },
+    "birthDate": {
+      "type": "date"
+    },
+    "breed": {
+      "type": "string"
+    }
+  },
+  "autoPK": true,
+  "autoCreatedAt": true,
+  "autoUpdatedAt": true
+}
+

v3.x

{
+  "connection": "mongoDBServer",
+  "options": {
+    "hasTimestamps": true
+  },
+  "attributes": {
+    "name": {
+      "type": "string",
+      "required": true
+    },
+    "gender": {
+      "type": "string"
+    },
+    "age": {
+      "type": "int",
+      "max": 100
+    },
+    "birthDate": {
+      "type": "date"
+    },
+    "breed": {
+      "type": "string"
+    }
+  }
+}
+

Query

We were based on the popular Waterline ORM. As we said in our blog posts, Waterline suffers from a lack of maintenance and we decided to move to more specific ORMs depending on the database. It increases the performances and unblock particular features for the users. Currently, we are supporting these databases:

  • MongoDB (through Mongoose).
  • Postgres, MySQL, SQLite3 and more (through Bookshelf).
  • Redis (through ioredis).

This major change means that you will have to rewrite every single query of your app. So, please to be sure that you need to switch to the new version of Strapi before starting the migration.

v1.x

module.exports = {
+  find: function *() {
+    try {
+      this.body = yield Post.find(this.params);
+    } catch (error) {
+      this.body = error;
+    }
+  },
+
+  findOne: function *() {
+    try {
+      this.body = yield Post.findOne(this.params);
+    } catch (error) {
+      this.body = error;
+    }
+  },
+
+  // POST request
+  create: function *() {
+    try {
+      this.body = yield Post.create(this.request.body);
+    } catch (error) {
+      this.body = error;
+    }
+  },
+
+  // PUT request
+  update: function *() {
+    try {
+      this.body = yield Post.update(this.params.id, this.request.body);
+    } catch (error) {
+      this.body = error;
+    }
+  },
+
+  // DELETE request
+  delete: function *() {
+    try {
+      this.body = yield Post.destroy(this.params);
+    } catch (error) {
+      this.body = error;
+    }
+  }
+};
+

v3.x

module.exports = {
+  find: async (ctx) => {
+    // Bookshelf
+    ctx.body = await Post.forge(this.params).fetchAll();
+    // Mongoose
+    ctx.body = await Post.find(this.params);
+  },
+
+  findOne: async (ctx) => {
+    // Bookshelf
+    ctx.body = await Post.forge(this.params).fetch();
+    // Mongoose
+    ctx.body = await Post.findOne(this.params);
+  },
+
+  create: async (ctx) => {
+    // Bookshelf
+    ctx.body = await Post.forge(this.request.body).save();
+    // Mongoose
+    ctx.body = await Post.create(this.request.body);
+  },
+
+  update: async (ctx) => {
+    // Bookshelf
+    ctx.body = await Post.forge({ id: 1234 }).save(this.request.body, {
+      patch: true
+    });
+    // Mongoose
+    ctx.body = await Post.update({ id: 1234 }, this.request.body);
+  },
+
+  delete: async (ctx) => {
+    // Bookshelf
+    ctx.body = await Post.forge({ id: 1234 }).destroy();
+    // Mongoose
+    ctx.body = await Post.findOneAndRemove({ id: 1234 });
+  }
+}
+

You will have more changes if your project is based on a SQL database. Waterline and Mongoose are almost sharing the same API.

Middlewares

We decided to reduce the core to the minimum. So, we removed middlewares with features that shouldn't be handled by a Node.js server such as:

  • GraphQL: We love GraphQL at Strapi and we will provide a strapi-plugin-graphql very soon.
  • Proxy: There are many great server solutions to handle a proxy feature such as nginx or Caddy.
  • SSL: Same as proxy.
  • Views: We are building APIs, not website. However, we know that sometimes you need to render views from your API server. That's why we created a strapi-views hook.

GraphQL

We are not able to give you a solution at the moment. As we said above, we will develop in the next weeks a dedicated plugin to integrate GraphQL into a project.

Proxy & SSL

You should take a look at these articles to configure SSL and proxy with nginx:

Views

It works exactly as before. You need to add strapi-views into your app's dependencies and configure the views as below:

Path — ./config/environments/**/custom.json

{
+  "views": {
+    "enabled": true,
+    "map": {
+      "ejs": "ejs"
+    },
+    "viewExt": "ejs",
+    "debug": true,
+    "cache": true
+  }
+}
+

You might have to install the template engine by your own (ex: npm install ejs --save).

Error handling

Boom is deeply integrated into the core which allows you to enjoy the entire Boom API through the context of your request. Every error throw in your project will be intercepted and decorated with Boom.

v1.x

module.exports = {
+  // GET request
+  find: function *() {
+    try {
+      const posts = yield Post.find(this.params);
+
+      if (posts.length === 0) {
+        ctx.status = 404;
+        ctx.body = 'There are no posts!';
+      } else {
+        ctx.body = posts;
+      }
+    } catch (error) {
+      this.body = error;
+    }
+  }
+};
+

v3.x

module.exports = {
+  // GET request
+  find: async (ctx) => {
+    const posts = await Post.find(this.params);
+
+    if (post.length === 0) {
+      ctx.notFound('There are no posts!'); // Set status to 404 and decorates error into a Boom object.
+    } else {
+      ctx.send(posts); // Set status to 200.
+    }
+  }
+};
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/plugin-development/backend-development.html b/docs/.vuepress/dist/3.x.x/plugin-development/backend-development.html new file mode 100644 index 0000000000..562d982688 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/plugin-development/backend-development.html @@ -0,0 +1,111 @@ + + + + + + Back-end Development | Strapi Docs + + + + + + + +

Back-end Development

This section explains how the 'back-end part' of your plugin works.

Routes

The plugin API routes are defined in the ./plugins/**/config/routes.json file.

Please refer to router documentation for informations.

Route prefix

Each route of a plugin is prefixed by the name of the plugin (eg: /my-plugin/my-plugin-route).

To disable the prefix, add the prefix attribute to each concerned route, like below:

{
+  "method": "GET",
+  "path": "/my-plugin-route",
+  "handler": "MyPlugin.action",
+  "prefix": false
+}
+

CLI

The CLI can be used to generate files in the plugins folders.

Please refer to the CLI documentation for more informations.

Controllers

Controllers contain functions executed according to the requested route.

Please refer to the Controllers documentation for more informations.

Models

A plugin can have its own models.

Table/Collection naming

Sometimes it happens that the plugins inject models that have the same name as yours. Let's take a quick example.

You already have User model defining in your ./api/user/models/User.settings.json API. And you decide to install the Users & Permissions plugin. This plugin also contains a User model. To avoid the conflicts, the plugins' models are not globally exposed which means you cannot access to the plugin's model like this:

module.exports = {
+  findUser: async function (params) {
+    // This `User` global variable will always make a reference the User model defining in your `./api/xxx/models/User.settings.json`.
+    return await User.find();
+  }
+}
+

Also, the table/collection name won't be users because you already have a User model. That's why, the framework will automatically prefix the table/collection name for this model with the name of the plugin. Which means in our example, the table/collection name of the User model of our plugin Users & Permissions will be users-permissions_users. If you want to force the table/collection name of the plugin's model, you can add the collectionName attribute in your model.

Please refer to the Models documentation for more informations.

Policies

Global policies

A plugin can also use a globally exposed policy in the current Strapi project.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/",
+      "handler": "MyPlugin.index",
+      "config": {
+        "policies": [
+          "global.isAuthenticated"
+        ]
+      }
+    }
+  ]
+}
+

Plugin policies

A plugin can have its own policies, such as adding security rules. For instance, if the plugin includes a policy named isAuthenticated, the syntax to use this policy would be:

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/",
+      "handler": "MyPlugin.index",
+      "config": {
+        "policies": [
+          "plugins.myPlugin.isAuthenticated"
+        ]
+      }
+    }
+  ]
+}
+

Please refer to the Policies documentation for more informations.

ORM queries

Strapi supports multiple ORMs in order to let the users choose the database management system that suits their needs. Hence, each plugin must be compatible with at least one ORM. Each plugin contains a folder named queries in ./plugins/**/api/queries. A folder must be created for each ORM (eg. mongoose) with a file named mongoose.js which exports the Mongoose ORM related queries.

The queries are accessible through the strapi.query() method, which automatically contains the queries according to the ORM used by the model.

Example

Mongoose ORM queries definition:

Path — ./plugins/my-plugin/api/config/queries/mongoose/index.js.

module.exports = {
+  getUsers: async (params) => {
+    return User.find(params);
+  }
+}
+

Bookshelf ORM queries definition:

Path — ./plugins/my-plugin/api/config/queries/bookshelf/index.js.

module.exports = {
+  getUsers: async (params) => {
+    return User.fetchAll(params);
+  }
+}
+

Usage from the plugin:

Path — ./plugins/my-plugin/api/controllers/index.js.

module.exports = {
+  getUsers: async () => {
+    // Get parameters from the request
+    const { limit, sort } = ctx.request.query;
+
+    // Get the list of users using the plugins queries
+    const users = await strapi.query('User').getUsers({ limit, sort });
+
+    // Send the list of users as response
+    ctx.body = users;
+  }
+}
+

Advanced usage

Each function in the query file is bound with the ORM's model. It means that you can create generic query very easily. This feature is useful for CRUD such as we did in the Content Manager plugin.

Mongoose ORM generic queries:

Path — ./plugins/my-plugin/api/config/queries/mongoose/index.js.

module.exports = {
+  getAll: async function (params) {
+    // this refers to the Mongoose model called in the query
+    // ex: strapi.query('User').getAll(), this will be equal to the User Mongoose model.
+    return this.find(params);
+  }
+}
+

Bookshelf ORM generic queries:

Path — ./plugins/my-plugin/api/config/queries/bookshelf/index.js.

module.exports = {
+  getAll: async function (params) {
+    // this refers to the Bookshelf model called in the query
+    // ex: strapi.query('User').getAll(), this will be equal to the User Bookshelf model.
+    return this.fetchAll(params);
+  }
+}
+

Usage from the plugin:

Path — ./plugins/my-plugin/api/controllers/index.js.

module.exports = {
+  getUsers: async () => {
+    // Get parameters from the request
+    const { limit, sort } = ctx.request.query;
+
+    // Get the list of users using the plugin's queries
+    const users = await strapi.query('User').getAll({ limit, sort });
+
+    // Send the list of users as response
+    ctx.body = users;
+  }
+}
+

+ + + diff --git a/docs/.vuepress/dist/3.x.x/plugin-development/frontend-development.html b/docs/.vuepress/dist/3.x.x/plugin-development/frontend-development.html new file mode 100644 index 0000000000..2ecfbb305d --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/plugin-development/frontend-development.html @@ -0,0 +1,77 @@ + + + + + + Front-end Development | Strapi Docs + + + + + + + +

Front-end Development

This section explains how to create your plugin interface in the admin panel. Refer to the Plugin Development Quick Start Section to start the project in development mode.

Introduction

Strapi's admin panel and plugins system aim to be an easy and powerful way to create new features.

The admin panel is a React application which can embed other React applications. These other React applications are the admin parts of each Strapi's plugins.

Routing

The routing is based on the React Router V4, due to it's implementation each route is declared in the containers/App/index.js file.

Also, we chose to use the Switch Router because it renders a route exclusively.

Route declaration :

Let's say that you want to create a route /user with params /:id associated with the container UserPage.

The declaration would be as followed :

Path — plugins/my-plugin/admin/src/containers/App/index.js.

import React from 'react';
+import UserPage from 'containers/UserPage';
+
+// ...
+
+class App extends React.Component {
+  // ...
+
+  render() {
+    return (
+      <div className={styles.myPlugin}>
+        <Switch>
+          <Route exact path="/plugins/my-plugin/user/:id" component={UserPage} />
+        </Switch>
+      </div>
+    );
+  }
+}
+
+// ...
+

See the Front-end Use Cases for more informations.

Data flow

Each plugin has its own data store, so it stays completely independent from the others.

Data flow is controlled thanks to Redux and redux-sagas.

Styling

The Bootstrap styles are inherited by the plugins. However, each component has its own styles, so it possible to completely customize it.

See the plugin styles for informations on its concept.

To style a plugin component:

  • Add a styles.scss file in the component directory
  • Require it from the index.js file (import styles from './styles.scss';)
  • Add some styles in the styles.scss file
.wrapper {
+    display: block;
+    background: red;
+    height: 100px;
+    width: 100px;
+}
+

Use this style in the component: <div className={styles.wrapper}></div>.

if you want to use several classes:

import cn from 'classnames';
+import styles from './styles.scss';
+
+// ...
+
+return (
+  <div className={cn(styles.wrapper, styles.otherClass)}>{this.props.children}</div>
+);
+
+// ...
+
+

i18n

React Intl provides React components and an API to format dates, numbers, and strings, including pluralization and handling translations.

Usage

We recommend to set all your components text inside the translations folder.

The example below shows how to use i18n inside your plugin.

Define all your ids with the associated message:

Path — ./plugins/my-plugin/admin/src/translations/en.json.

{
+  "notification.error.message": "An error occurred"
+}
+

Path — ./plugins/my-plugin/admin/src/translations/fr.json

{
+  "notification.error.message": "Une erreur est survenue"
+}
+

Usage inside a component

Path — ./plugins/my-plugin/admin/src/components/Foo/index.js.

import { FormattedMessage } from 'react-intl';
+import SomeOtherComponent from 'components/SomeOtherComponent';
+
+const Foo = (props) => (
+  <div className={styles.foo}>
+    <FormattedMessage id="my-plugin.notification.error.message" />
+    <SomeOtherComponent {...props} />
+  </div>
+)
+
+export default Foo;
+

See the documentation for more extensive usage.

Generators

You can use generators to create React components or containers for your plugin.

  1. In your terminal go to your plugin folder cd plugins/my-plugin
  2. Run npm run generate and choose the type of component your want to create
+ + + diff --git a/docs/.vuepress/dist/3.x.x/plugin-development/frontend-use-cases.html b/docs/.vuepress/dist/3.x.x/plugin-development/frontend-use-cases.html new file mode 100644 index 0000000000..2118a6c2a5 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/plugin-development/frontend-use-cases.html @@ -0,0 +1,541 @@ + + + + + + Front-end Use Cases | Strapi Docs + + + + + + + +

Front-end Use Cases

This section gives use cases examples on front-end plugin development.

Plugin advanced usage

This section contains advanced resources to develop plugins.

Inject design

The ExtendComponent allows you to inject design from one plugin into another.

Example

Let's say that you want to enable another plugin to inject a component into the top area of your plugin's container called FooPage;

Path — ./plugins/my-plugin/admin/src/containers/FooPage/actions.js.

import {
+  ON_TOGGLE_SHOW_LOREM,
+} from './constants';
+
+export function onToggleShowLorem() {
+  return {
+    type: ON_TOGGLE_SHOW_LOREM,
+  };
+}
+

Path — ./plugins/my-plugin/admin/src/containers/FooPage/index.js.

import React from 'react';
+import { connect } from 'react-redux';
+import { bindActionCreators, compose } from 'redux';
+import { createStructuredSelector } from 'reselect';
+import PropTypes from 'prop-types';
+
+// Import the ExtendComponent
+import ExtendComponent from 'components/ExtendComponent';
+
+// Utils
+import injectReducer from 'utils/injectReducer';
+
+// Actions
+import { onToggleShowLorem } from './action'
+
+import reducer from './reducer';
+
+// Selectors
+import { makeSelectShowLorem } from './selectors';
+
+class FooPage extends React.Component {
+  render() {
+    const lorem = this.props.showLorem ? <p>Lorem ipsum dolor sit amet, consectetur adipiscing</p> : '';
+    return (
+      <div>
+        <h1>This is FooPage container</h1>
+        <ExtendComponent
+          area="top"
+          container="FooPage"
+          plugin="my-plugin"
+          {...props}
+        />
+        {lorem}
+      </div>
+    );
+  }
+}
+
+FooPage.propTypes = {
+  onToggleShowLorem: PropTypes.func.isRequired,
+  showLorem: PropTypes.bool.isRequired,
+};
+
+function mapDispatchToProps(dispatch) {
+  return bindActionCreators(
+    {
+      onToggleShowLorem,
+    },
+    dispatch,
+  );
+}
+
+const mapStateToProps = createStructuredSelector({
+  showLorem: makeSelectShowLorem(),
+});
+
+const withConnect = connect(mapDispatchToProps, mapDispatchToProps);
+const withReducer = injectReducer({ key: 'fooPage', reducer });
+
+export default compose(
+  withReducer,
+  withConnect,
+)(FooPage);
+

Path — ./plugins/my-plugin/admin/src/containers/FooPage/reducer.js.

import { fromJS } from 'immutable';
+import { ON_TOGGLE_SHOW_LOREM } from './constants';
+
+const initialState = fromJS({
+  showLorem: false,
+});
+
+function fooPageReducer(state= initialState, action) {
+  switch (action.type) {
+    case ON_TOGGLE_SHOW_LOREM:
+      return state.set('showLorem', !state.get('showLorem'));
+    default:
+      return state;
+  }
+}
+
+export default fooPageReducer;
+

Path — ./plugins/my-plugin/admin/src/containers/FooPage/selectors.js.

import  { createSelector } from 'reselect';
+
+/**
+* Direct selector to the fooPage state domain
+*/
+
+const selectFooPageDomain = () => state => state.get('fooPage');
+
+/**
+* Other specific selectors
+*/
+
+const makeSelectShowLorem = () => createSelector(
+  selectFooPageDomain(),
+  (substate) => substate.get('showLorem'),
+);
+
+export { makeSelectShowLorem };
+

That's all now your plugin's container is injectable!

Let's see how to inject a React Component from a plugin into another.

Create your injectedComponent

Path - ./plugins/another-plugin/admin/src/extendables/BarContainer/index.js;

import React from 'react';
+import PropTypes from 'prop-types';
+
+// Import our Button component
+import Button from 'components/Button';
+
+// Other imports such as actions, selectors, sagas, reducer...
+
+class BarContainer extends React.Component {
+  render() {
+    return (
+      <div>
+        <Button primary onClick={this.props.onToggleShowLorem}>
+          Click me to show lorem paragraph
+        </Button>
+      </div>
+    );
+  }
+}
+
+BarContainer.propTypes = {
+  onToggleShowLorem: PropTypes.func,
+};
+
+BarContainer.defaultProps = {
+  onToggleShowLorem: () => {},
+};
+
+export default BarContainer;
+

Tell the admin that you want to inject a React Component from a plugin into another

You have to create a file called injectedComponents.js at the root of your another-plugin src folder.

Path — ./plugins/another-plugin/admin/src/injectedComponents.js.

import BarContainer from 'extendables/BarContainer';
+
+// export an array containing all the injected components
+export default [
+  {
+    area: 'top',
+    container: 'FooPage',
+    injectedComponent: BarContainer,
+    plugin: 'my-plugin',
+  },
+];
+

Just by doing so, the another-plugin will add a Button which toggles the lorem paragraph in the FooPage view.


Routeless container store injection

If you have a container which can be a child of several other containers (i.e. it doesn't have a route); you'll have to inject it directly in the ./plugins/my-plugin/admin/src/containers/App/index.js file as follows :

Path — ./plugins/my-plugin/admin/src/containers/App/index.js.

// ...
+import fooReducer from 'containers/Foo/reducer';
+import fooSaga from 'container/Foo/sagas';
+
+import saga from './sagas';
+import { makeSelectFoo } from './selectors';
+
+// ...
+
+export class App extends React.Component {
+  render() {
+    return (
+      <div className={styles.app}>
+        <Switch>
+          {*/ List of all your routes here */}
+        </Switch>
+      </div>
+    );
+  }
+}
+
+// ...
+
+function mapDispatchToProps(dispatch) {
+  return bindActionCreators(
+    {
+    },
+    dispatch
+  );
+}
+
+const mapStateToProps = createStructuredSelector({
+  // ...
+});
+
+const withConnect = connect(mapStateToProps, mapDispatchToProps);
+// Foo reducer
+const withFooReducer = injectReducer({ key: 'foo', reducer: fooReducer });
+// Global reducer
+const withReducer = injectReducer({ key: 'global', reducer });
+// Foo saga
+const withFooSaga = injectSaga({ key: 'foo', saga: fooSaga });
+// Global saga
+const withSaga = injectSaga({ key: 'global', saga });
+
+export default compose(
+  withFooReducer,
+  withReducer,
+  withFooSaga,
+  withSaga,
+  withConnect,
+)(App);
+

Execute logic before mounting the plugin

You can execute a business logic before your plugin is being mounted.

Usage

To do this, you need to create bootstrap.js file at the root of your src plugin's folder. +This file must contains a default functions that returns a Promise.

Example

In this example, we want to populate the left menu with links that will refer to our Content Types.

Path — ./app/plugins/content-manager/admin/src/bootstrap.js.

import { generateMenu } from 'containers/App/sagas';
+
+// This method is executed before the load of the plugin
+const bootstrap = (plugin) => new Promise((resolve, reject) => {
+  generateMenu()
+    .then(menu => {
+      plugin.leftMenuSections = menu;
+
+      resolve(plugin);
+    })
+    .catch(e => reject(e));
+});
+
+export default bootstrap;
+

Prevent plugin rendering

You can prevent your plugin from being rendered if some conditions aren't met.

Usage

To disable your plugin's rendering, you can simply create requirements.js file at the root of your src plugin's folder. +This file must contain a default function that returns a Promise.

Example

Let's say that you want to disable your plugin if the server autoReload config is disabled in development mode.

Path — ./app/config/environments/development/server.json.

{
+  "host": "localhost",
+  "port": 1337,
+  "autoReload": {
+    "enabled": true
+  },
+  "cron": {
+    "enabled": false
+  }
+}
+

You'll first create a request to check if the autoReload config is enabled.

Path — ./app/plugins/my-plugin/config/routes.json.

{
+  "routes": [
+    {
+      "method": "GET",
+      "path": "/autoReload",
+      "handler": "MyPlugin.autoReload",
+      "config": {
+        "policies": []
+      }
+    }
+  ]
+}
+

Then the associated handler:

Path — ./app/plugins/my-plugin/controllers/MyPlugin.js.

const _ = require('lodash');
+const send = require('koa-send');
+
+module.exports = {
+  autoReload: async ctx => {
+    ctx.send({ autoReload: _.get(strapi.config.environments, 'development.server.autoReload', false) });
+  }
+}
+

Finally, you'll create a file called requirements.jsat the root of your plugin's src folder.

The default function exported must return a Promise. +If you wan't to prevent the plugin from being rendered you'll have to set plugin.preventComponentRendering = true;. +In this case, you'll have to set:

plugin.blockerComponentProps = {
+  blockerComponentTitle: 'my-plugin.blocker.title',
+  blockerComponentDescription: 'my-plugin.blocker.description',
+  blockerComponentIcon: 'fa-refresh',
+};
+

To follow the example above:

Path — ./app/plugins/my-plugin/admin/src/requirements.js.

// Use our request helper
+import request from 'utils/request';
+
+const shouldRenderCompo = (plugin) => new Promise((resolve, request) => {
+  request('/my-plugin/autoReload')
+    .then(response => {
+      // If autoReload is enabled the response is `{ autoReload: true }`
+      plugin.preventComponentRendering = !response.autoReload;
+      // Set the BlockerComponent props
+      plugin.blockerComponentProps = {
+        blockerComponentTitle: 'my-plugin.blocker.title',
+        blockerComponentDescription: 'my-plugin.blocker.description',
+        blockerComponentIcon: 'fa-refresh',
+        blockerComponentContent: 'renderIde', // renderIde will add an ide section that shows the development environment server.json config
+      };
+
+      return resolve(plugin);
+    })
+    .catch(err => reject(err));
+});
+
+export default shouldRenderCompo;
+

Customization

You can render your own custom blocker by doing as follows:

Path — ./app/plugins/my-plugin/admin/src/requirements.js.

// Use our request helper
+import request from 'utils/request';
+
+// Your custom blockerComponentProps
+import MyCustomBlockerComponent from 'components/MyCustomBlockerComponent';
+
+const shouldRenderCompo = (plugin) => new Promise((resolve, request) => {
+  request('/my-plugin/autoReload')
+    .then(response => {
+      // If autoReload is enabled the response is `{ autoReload: true }`
+      plugin.preventComponentRendering = !response.autoReload;
+
+      // Tell which component to be rendered instead
+      plugin.blockerComponent = MyCustomBlockerComponent;
+
+      return resolve(plugin);
+    })
+    .catch(err => reject(err));
+});
+
+export default shouldRenderCompo;
+

Using React/Redux and sagas

If your application is going to interact with some back-end application for data, we recommend using redux saga for side effect management. +This short tutorial will show how to fetch data using actions/reducer/sagas.

Constants declaration

Path — ./plugins/my-plugin/admin/src/containers/FooPage/constants.js

export const DATA_FETCH = 'MyPlugin/FooPage/DATA_FETCH';
+export const DATA_FETCH_ERROR = 'MyPlugin/FooPage/DATA_FETCH_ERROR';
+export const DATA_FETCH_SUCCEEDED = 'MyPlugin/FooPage/DATA_FETCH_SUCCEEDED';
+

Actions declaration

Path — ./plugins/my-plugin/admin/src/containers/FooPage/actions.js

import {
+  DATA_FETCH,
+  DATA_FETCH_ERROR,
+  DATA_FETCH_SUCCEEDED,
+} from './constants';
+
+export function dataFetch(params) {
+  return {
+    type: DATA_FETCH,
+    params,
+  };
+}
+
+export function dataFetchError(errorMessage) {
+  return {
+    type: DATA_FETCH_ERROR,
+    errorMessage,
+  };
+}
+
+export function dataFetchSucceeded(data) {
+  return {
+    type: DATA_FETCH_SUCCEEDED,
+    data,
+  };
+}
+

Reducer

We strongly recommend to use Immutable.js to structure your data.

Path — ./plugins/my-plugin/admin/src/containers/FooPage/reducer.js

import { fromJS, Map } from 'immutable';
+import {
+  DATA_FETCH_ERROR,
+  DATA_FETCH_SUCCEEDED,
+} from './constants';
+
+const initialState = fromJS({
+  data: Map({}),
+  error: false,
+  errorMessage: '',
+  loading: true,
+});
+
+function fooPageReducer(state = initialState, action) {
+  switch (action.type) {
+    case DATA_FETCH_ERROR:
+      return state
+        .set('error', true)
+        .set('errorMessage', action.errorMessage)
+        .set('loading', false);
+    case DATA_FETCH_SUCCEEDED:
+      return state
+        .set('data', Map(action.data))
+        .set('error', false)
+        .set('errorMessage', '')
+        .set('loading', false);
+    default:
+      return state;
+  }
+}
+
+export default fooPageReducer;
+

Sagas

Path — ./plugins/my-plugin/admin/src/containers/FooPage/sagas.js

import { LOCATION_CHANGE } from 'react-router-redux';
+import { takeLatest, put, fork, call, take, cancel } from 'redux-saga/effects';
+
+// Use our request helper
+import request from 'utils/request';
+
+// Actions
+import { dataFetchError, dataFetchSucceeded } from './actions';
+import { DATA_FETCH } from './constants';
+
+export function* fetchData(action) {
+  try {
+    const requestUrl = `/baseUrl/${action.params}`;
+    const opts = {
+      method: 'GET',
+    };
+
+    // Fetch data
+    const response = yield call(request, requestUrl, opts);
+
+    // Pass the response to the reducer
+    yield put(dataFetchSucceeded(response));
+
+  } catch(error) {
+    yield put(dataFetchError(error));
+  }
+}
+
+// Individual export for testing
+function* defaultSaga() {
+  // Listen to DATA_FETCH event
+  const fetchDataWatcher = yield fork(takeLatest, DATA_FETCH, fetchData);
+
+  // Cancel watcher
+  yield take(LOCATION_CHANGE);
+
+  yield cancel(fetchDataWatcher);
+}
+
+export default defaultSaga;
+

N.B. You can use a selector in your sagas :

import { put, select, fork, call, take, cancel } from 'redux-saga/effects';
+import { makeSelectUserName } from './selectors';
+
+export function* foo() {
+  try {
+    const userName = yield select(makeSelectUserName());
+
+    // ...
+  } catch(error) {
+    // ...
+  }
+}
+
+function defaultSaga() {
+  // ...
+}
+
+export default defaultSaga;
+

Selectors

Reselect is a library used for slicing your redux state and providing only the relevant sub-tree to a react component. It has three key features:

  1. Computational power
  2. Memoization
  3. Composability

Creating a selector:

Path — ./plugins/my-plugin/admin/src/containers/FooPage/selectors.js

import { createSelector } from 'reselect';
+
+/**
+* Direct selector to the fooPage state domain
+*/
+const selectFooPageDomain = () => state => state.get('fooPage');
+
+/**
+ * Other specific selectors
+ */
+
+ const makeSelectLoading = () => createSelector(
+   selectFooPageDomain(),
+   (substate) => substate.get('loading'),
+ );
+
+/**
+ * Default selector used by FooPage
+ */
+
+const selectFooPage = () => createSelector(
+  selectFooDomain(),
+  (substate) => substate.toJS()
+);
+
+export default selectFooPage;
+export { makeSelectLoading };
+
+

Example

Path — ./plugins/my-plugin/admin/src/containers/FooPage/index.js

import React from 'react';
+import { bindActionCreators } from 'redux';
+import { connect, compose } from 'react-redux';
+import PropTypes from 'prop-types';
+
+// Main router
+import { router } from 'app';
+
+// Utils
+import injectSaga from 'utils/injectSaga';
+import injectReducer from 'utils/injectReducer';
+
+// Actions
+import { dataFetch } from './actions';
+// sagas
+import saga from './sagas';
+// Selectors
+import selectFooPage from './selectors';
+// Reducer
+import reducer from './reducer';
+
+export class FooPage extends React.Component {
+  componentWillReceiveProps(nextProps) {
+    if (this.props.error !== nextProps.error && nextProps.error) {
+      strapi.notification.error(nextProps.errorMessage);
+    }
+  }
+
+  componentDidUpdate(prevProps) {
+    if (prevProps.match.pathname !== this.props.pathname) {
+      this.props.dataFetch(this.props.match.params.bar);
+    }
+  }
+
+  render() {
+    if (this.props.error) return <div>An error occurred</div>;
+
+    return (
+      <div>
+        <h4>Data display</h4>
+        <span>{this.props.data.foo}</span>
+        <span>{this.props.data.bar}</span>
+      </div>
+    );
+  }
+
+  FooPage.propTypes = {
+    data: PropTypes.object.isRequired,
+    dataFetch: PropTypes.func.isRequired,
+    error: PropTypes.bool.isRequired,
+    errorMessage: PropTypes.string.isRequired,
+    match: PropTypes.object.isRequired,
+  };
+
+  const mapStateToProps = selectFoo();
+
+  function mapDispatchToProps(dispatch) {
+    return bindActionCreators(
+      {
+        dataFetch,
+      },
+      dispatch
+    );
+  }
+
+  const withConnect = connect(mapStateToProps, mapDispatchToProps);
+  const withReducer = injectReducer({ key: 'fooPage', reducer });
+  const withSagas = injectSaga({ key: 'fooPage', saga });
+
+  export default compose(
+    withReducer,
+    withSagas,
+    withConnect,
+  )(FooPage);
+}
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/plugin-development/plugin-architecture.html b/docs/.vuepress/dist/3.x.x/plugin-development/plugin-architecture.html new file mode 100644 index 0000000000..a431458bf2 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/plugin-development/plugin-architecture.html @@ -0,0 +1,55 @@ + + + + + + Plugin Folders and Files Architecture | Strapi Docs + + + + + + + +

Plugin Folders and Files Architecture

The logic of a plugin is located at his root directory ./plugins/**. The admin panel related parts of each plugin is contained in the /admin folder. +The folders and files structure is the following:

/plugin
+└─── admin // Contains the plugin's front-end
+|     └─── build // Webpack build of the plugin
+|     └─── src // Source code directory
+|          └─── bootstrap.js // (Optional) Contains the logic to execute before rendering the plugin
+|          └─── components // Contains the list of React components used by the plugin
+|          └─── containers
+|          |    └─── App // Container used by every others containers
+|          |    └─── HomePage
+|          |         └─── action.js // List of Redux actions used by the current container
+|          |         └─── constants.js // List of actions constants
+|          |         └─── index.js // React component of the current container
+|          |         └─── reducer.js // Redux reducer used by the current container
+|          |         └─── sagas.js // List of sagas functions
+|          |         └─── selectors.js // List of selectors
+|          |         └─── styles.scss // Style of the current container
+|          |
+|          └─── requirements.js // (Optional) Contains the logic to prevent a plugin from being rendered
+|          └─── translations // Contains the translations to make the plugin internationalized
+|               └─── en.json
+|               └─── fr.json
+└─── config // Contains the configurations of the plugin
+|     └─── functions
+|     |    └─── bootstrap.js // Asynchronous bootstrap function that runs before the app gets started
+|     └─── policies // Folder containing the plugin's policies
+|     └─── queries // Folder containing the plugin's models queries
+|     └─── routes.json // Contains the plugin's API routes
+└─── controllers // Contains the plugin's API controllers
+└─── middlewares // Contains the plugin's middlewares
+└─── models // Contains the plugin's API models
+└─── services // Contains the plugin's API services
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/plugin-development/plugin-left-menu.html b/docs/.vuepress/dist/3.x.x/plugin-development/plugin-left-menu.html new file mode 100644 index 0000000000..42e9a25f9c --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/plugin-development/plugin-left-menu.html @@ -0,0 +1,135 @@ + + + + + + Plugin Menu library | Strapi Docs + + + + + + + +

Plugin Menu library

// ...
+
+import PluginLeftMenu from 'components/PluginLeftMenu';
+
+// ...
+
+const Foo = (props) => {
+  const sections = [
+    {
+      name: 'section 1',
+      items: [
+        { icon: 'fa-caret-square-o-right', name: 'link 1'},
+        { icon: 'fa-caret-square-o-right', name: 'link 2'},
+      ],
+    },
+  ];
+
+  return (
+    <div className={styles.foo}>
+      <div className="container-fluid">
+        <div className="row">
+          <PluginLeftMenu
+            sections={sections}
+          />
+        </div>
+      </div>
+    </div>
+  );
+}
+
+export default Foo;
+
+// ...
+

Usage

Property Type Required Description
addCustomSection function no Allows to add another section after the initial one.
basePath string yes For example the basePath of the route '/plugins/my-plugin/foo/bar' is 'my-plugin/categories'
renderCustomLink function no Allows to override the design and the behavior of a link
sections array yes Sections of the component menu

Example

// ...
+
+import PluginLeftMenu from 'components/PluginLeftMenu';
+
+// ...
+
+const addCustomSection = (sectionStyles) => (
+  // You have access to the section styles
+  <div className={sectionStyles.pluginLeftMenuSection}>
+    <p>
+      DOCUMENTATION
+    </p>
+    <ul>
+      <li>
+        Read more about strapi in our <a href="http://strapi.io/documentation" target="_blank">documentation</a>
+      </li>
+    </ul>
+  </div>
+)
+
+const renderAddLink = (props, customLinkStyles) => (
+  <li className={customLinkStyles.pluginLeftMenuLink}>
+    <div className={`${customLinkStyles.liInnerContainer}`} onClick={this.handleAddLinkClick}>
+      <div>
+        <i className={`fa ${props.link.icon}`} />
+      </div>
+      <span>{props.link.name}</span>
+    </div>
+  </li>
+)
+
+const renderCustomLink = (props, linkStyles) => {
+  if (props.link.name === 'bar') return this.renderAddLink(props, linkStyles);
+
+  return (
+    <li className={linkStyles.pluginLeftMenuLink}>
+      <NavLink className={linkStyles.link} to={`/plugins/my-plugin/foo/${props.link.name}`} activeClassName={linkStyles.linkActive}>
+        <div>
+          <i className={`fa fa-caret-square-o-right`} />
+        </div>
+        <div className={styles.contentContainer}>
+          <span className={spanStyle}>{props.link.name}</span>
+        </div>
+
+      </NavLink>
+    </li>
+  );
+}
+
+const Foo = (props) => {
+  const sections = [
+    {
+      name: 'section 1',
+      items: [
+        { icon: 'fa-caret-square-o-right', name: 'link 1'},
+        { icon: 'fa-caret-square-o-right', name: 'link 2'},
+      ],
+    },
+  ];
+
+  return (
+    <div className={styles.foo}>
+      <div className="container-fluid">
+        <div className="row">
+          <PluginLeftMenu
+            addCustomSection={addCustomSection}
+            sections={sections}
+            renderCustomLink={renderCustomLink}
+            basePath="my-plugins/foo"
+          />
+        </div>
+      </div>
+    </div>
+  );
+}
+
+// ...
+
+export default Foo;
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/plugin-development/quick-start.html b/docs/.vuepress/dist/3.x.x/plugin-development/quick-start.html new file mode 100644 index 0000000000..6ceafb403b --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/plugin-development/quick-start.html @@ -0,0 +1,23 @@ + + + + + + Quick start | Strapi Docs + + + + + + + +

Quick start

To facilitate the development of a plugin, we drastically reduce the amount of commands necessary to install the entire development environment. Before getting started, you need to have Node.js (v8) and npm (v5) installed.

Development Environment Setup

To setup the development environment please follow the instructions below:

  1. Fork the repository to your own GitHub account.
  2. Clone it to your computer git clone git@github.com:strapi/strapi.git.
  3. Run npm run setup at the root of the directory.

You can run npm run setup:build to build the plugins' admin (the setup time will be longer)

If the installation failed, please remove the global packages related to Strapi. The command npm ls strapi will help you to find where your packages are installed globally.

Plugin development Setup

Create a development project

  1. Go to a folder on your computer cd /path/to/my/folder.
  2. Create a new project strapi new myDevelopmentProject --dev.

To generate a new plugin run the following commands:

  1. In your project folder cd myDevelopmentProject && strapi generate:plugin my-plugin.
  2. Link the strapi-helper-plugin dependency in your project folder cd pathToMyProject/myDevelopmentProject/plugins/my-plugin && npm link strapi-helper-plugin.
  3. Link the strapi-helper-plugin dependency in the analytics plugin folder cd pathToMyProject/myDevelopmentProject/plugins/analytics && npm link strapi-helper-plugin.
  4. Start the server in the admin folder cd pathToMyProject/myDevelopmentProject/admin && npm start and go to the following url http://localhost:4000/admin.
  5. In a new terminal window open at the root of your project launch your Strapi server strapi start.

Your are now ready to develop your own plugin and live-test your updates!

+ + + diff --git a/docs/.vuepress/dist/3.x.x/plugin-development/ui-components.html b/docs/.vuepress/dist/3.x.x/plugin-development/ui-components.html new file mode 100644 index 0000000000..75c6dfdabe --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/plugin-development/ui-components.html @@ -0,0 +1,23 @@ + + + + + + Strapi Docs + + + + + + + +
+ + + diff --git a/docs/.vuepress/dist/3.x.x/plugin-development/utils.html b/docs/.vuepress/dist/3.x.x/plugin-development/utils.html new file mode 100644 index 0000000000..f23857dccc --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/plugin-development/utils.html @@ -0,0 +1,356 @@ + + + + + + Helpers | Strapi Docs + + + + + + + +

Helpers

Strapi provides helpers so you don't have to develop again and again the same generic functions.

Auth

auth.js lets you get, set and delete data in either the browser's localStorage or sessionStorage.

Methods

Name Description
clear(key) Remove the data in either localStorage or sessionStorage
clearAppStorage() Remove all data from both storage
clearToken() Remove the user's jwt Token in the appropriate browser's storage
clearUserInfo() Remove the user's info from storage
get(key) Get the item in the browser's storage
getToken() Get the user's jwtToken
getUserInfo() Get the user's infos
set(value, key, isLocalStorage) Set an item in the sessionStorage. If true is passed as the 3rd parameter it sets the value in the localStorage
setToken(value, isLocalStorage) Set the user's jwtToken in the sessionStorage. If true is passed as the 2nd parameter it sets the value in the localStorage
setUserInfo(value, isLocalStorage) Set the user's info in the sessionStorage. If true is passed as the 2nd parameter it sets the value in the localStorage
import auth from 'utils/auth';
+
+// ...
+//
+auth.setToken('12345', true); // This will set 1234 in the browser's localStorage associated with the key: jwtToken
+

Colors

This function allows to darken a color.

Usage

import { darken } from 'utils/colors';
+
+const linkColor = darken('#f5f5f5', 1.5); // Will darken #F5F5F5 by 1.5% which gives #f2f2f2.
+

Get URL Query Parameters

The helpers allows to retrieve the query parameters in the URL.

Example

import getQueryParameters from 'utils/getQueryParameters';
+
+const URL = '/create?source=users-permissions';
+const source = getQueryParameters(URL, 'source');
+
+console.log(source); // users-permissions
+
+

Request helper

A request helper is available to handle all requests inside a plugin.

It takes three arguments:

  • requestUrl: The url we want to fetch.
  • options: Please refer to this documentation.
  • true: This third argument is optional. If true is passed the response will be sent only if the server has restarted check out the example.

Usage

Path - /plugins/my-plugin/admin/src/containers/**/sagas.js.

import { call, fork, put, takeLatest } from 'redux-saga/effects';
+
+// Our request helper
+import request from 'utils/request';
+import { dataFetchSucceeded, dataFetchError } from './actions';
+import { DATA_FETCH } from './constants';
+
+export function* fetchData(action) {
+  try {
+    const opts = {
+      method: 'GET',
+    };
+    const requestUrl = `/my-plugin/${action.endPoint}`;
+    const data = yield call(request, requestUrl, opts);
+
+    yield put(dataFetchSucceeded(data));
+  } catch(error) {
+    yield put(dataFetchError(error))
+  }
+}
+
+// Individual exports for testing
+function* defaultSaga() {
+  yield fork(takeLatest, DATA_FETCH, fetchData);
+}
+
+export default defaultSaga;
+

Simple example

Let's say that we have a container that fetches Content Type configurations depending on URL change.

Routing declaration:

Here we want to create a route /content-type/:contentTypeName for the ContentTypePage container.

Path — ./plugins/my-plugin/admin/src/container/App/index.js.

import React from 'react';
+import { connect } from 'react-redux';
+import { bindActionCreators, compose } from 'redux';
+
+import { createStructuredSelector } from 'reselect';
+import { Switch, Route, withRouter } from 'react-router-dom';
+import PropTypes from 'prop-types';
+import { pluginId } from 'app';
+
+import ContentTypePage from 'containers/ContentTypePage';
+import styles from './styles.scss';
+
+class App extends React.Component {
+  render() {
+    return (
+      <div className={`${pluginId} ${styles.app}`}>
+        <Switch>
+          <Route exact path="/plugins/my-plugin/content-type/:contentTypeName" component={ContentTypePage} />
+        </Switch>
+      </div>
+    );
+  }
+}
+
+App.contextTypes = {
+  router: PropTypes.object.isRequired,
+};
+
+export function mapDispatchToProps(dispatch) {
+  return bindActionCreators(
+    {},
+    dispatch
+  );
+}
+
+const mapStateToProps = createStructuredSelector({});
+const withConnect = connect(mapStateToProps, mapDispatchToProps);
+
+export default compose(
+  withConnect,
+)(App);
+
+

Constants declaration:

Let's declare the needed constants to handle fetching data:

Path — ./plugins/my-plugin/admin/src/containers/ContentTypePage/constants.js.

export const DATA_FETCH = 'myPlugin/ContentTypePage/DATA_FETCH';
+export const DATA_FETCH_ERROR = 'myPlugin/ContentTypePage/DATA_FETCH_ERROR';
+export const DATA_FETCH_SUCCEEDED = 'myPlugin/ContentTypePage/DATA_FETCH_SUCCEEDED';
+

Actions declaration:

Let's declare our actions.

Path — ./plugins/my-plugin/admin/src/containers/ContentTypePage/actions.js.

import {
+  DATA_FETCH,
+  DATA_FETCH_ERROR,
+  DATA_FETCH_SUCCEEDED,
+} from './constants';
+
+export function dataFetch(contentTypeName) {
+  return {
+    type: DATA_FETCH,
+    contentTypeName,
+  };
+}
+
+export function dataFetchError(errorMessage) {
+  return {
+    type: DATA_FETCH_ERROR,
+    errorMessage,
+  };
+}
+
+export function dataFetchSucceeded(data) {
+  // data will look like { data: { name: 'User', description: 'Some description' } }
+  return {
+    type: DATA_FETCH_SUCCEEDED,
+    data,
+  };
+}
+

Reducer setup:

Please refer to the Immutable documentation for informations about data structure.

Path — ./plugins/my-plugin/admin/src/containers/ContentTypePage/reducer.js.

import { fromJS, Map } from 'immutable';
+import {
+  DATA_FETCH,
+  DATA_FETCH_ERROR,
+  DATA_FETCH_SUCCEEDED
+} from './constants';
+
+const initialState = fromJS({
+  contentTypeName,
+  error: false,
+  errorMessage: '',
+  data: Map({}),
+});
+
+function contentTypePageReducer(state = initialState, action) {
+  switch (action.type) {
+    case DATA_FETCH:
+      return state.set('contentTypeName', action.contentTypeName);
+    case DATA_FETCH_ERROR:
+      return state
+        .set('error', true)
+        .set('errorMessage', action.errorMessage);
+    case DATA_FETCH_SUCCEEDED:
+      return state
+        .set('error', false)
+        .set('data', Map(action.data.data));
+    default:
+      return state;
+  }
+}
+
+export default contentTypePageReducer;
+

Selectors setup:

Path — ./plugins/my-plugin/admin/src/containers/ContentTypePage/selectors.js.

import { createSelector } from 'reselect';
+
+/**
+ * Direct selector to the contentTypePage state domain
+ */
+const selectContentTypePageDomain = () => state => state.get('contentTypePage');
+
+/**
+ * Other specific selectors
+ */
+
+
+/**
+ * Default selector used by ContentTypePage
+ */
+
+const selectContentTypePage = () => createSelector(
+  selectContentTypePageDomain(),
+  (substate) => substate.toJS()
+);
+
+const makeSelectContentTypeName = () => createSelector(
+  selectContentTypePageDomain(),
+  (substate) => substate.get('contentTypeName');
+)
+export default selectContentTypePage;
+export { makeSelectContentTypeName, selectContentTypePageDomain };
+

Handling route change:

Path — ./plugins/my-plugin/admin/src/containers/ContentTypePage/index.js.

import React from 'react';
+import { connect } from 'react-redux';
+import { createStructuredSelector } from 'reselect';
+import { bindActionCreators, compose } from 'redux';
+import { NavLink } from 'react-router-dom';
+import PropTypes from 'prop-types';
+import { map } from 'lodash';
+
+// Utils to create the container's store
+import injectSaga from 'utils/injectSaga';
+import injectReducer from 'utils/injectReducer';
+
+import { dataFetch } from './actions';
+import { selectContentTypePage } from './selectors';
+import saga from './sagas';
+import reducer from './reducer';
+import styles from './styles.scss';
+
+export class ContentTypePage extends React.Component { // eslint-disable-line react/prefer-stateless-function
+  constructor(props) {
+    super(props);
+
+    this.links = [
+      {
+        to: 'plugin/my-plugin/content-type/product',
+        info: 'Product',
+      },
+      {
+        to: 'plugin/my-plugin/content-type/user',
+        info: 'User',
+      },
+    ];
+  }
+
+  componentDidMount() {
+    this.props.dataFetch(this.props.match.params.contentTypeName);
+  }
+
+  componentWillReceiveProps(nextProps) {
+    if (nextProps.match.params.contentTypeName !== this.props.match.params.contentTypeName) {
+      this.props.dataFetch(nextProps.match.params.contentTypeName);
+    }
+  }
+
+  render() {
+    return (
+      <div className={styles.contentTypePage}>
+        <div>
+          <ul>
+            {map(this.links, (link, key) => (
+              <li key={key}>
+                <NavLink to={link.to}>{link.info}</NavLink>
+              </li>
+            ))}
+          </ul>
+        </div>
+        <div>
+          <h1>{this.props.data.name}</h1>
+          <p>{this.props.data.description}</p>
+        </div>
+      </div>
+    );
+  }
+}
+
+const mapStateToProps = selectContentTypePage();
+
+function mapDispatchToProps(dispatch) {
+  return bindActionCreators(
+    {
+      dataFetch,
+    },
+    dispatch,
+  );
+}
+
+ContentTypePage.propTypes = {
+  data: PropTypes.object.isRequired,
+  dataFetch: PropTypes.func.isRequired,
+  match: PropTypes.object.isRequired,
+};
+
+const withConnect = connect(mapStateToProps, mapDispatchToProps);
+const withSaga = injectSaga({ key: 'contentTypePage', saga });
+const withReducer = injectReducer({ key: 'contentTypePage', reducer });
+
+export default compose(
+  withReducer,
+  withSaga,
+  withConnect,
+)(ContentTypePage);
+

Fetching data:

The sagas.js file is in charge of fetching data.

Path — ./plugins/my-plugin/admin/src/containers/ContentTypePage/sagas.js.

import { LOCATION_CHANGE } from 'react-router-redux';
+import { takeLatest, call, take, put, fork, cancel, select } from 'redux-saga/effects';
+import request from 'utils/request';
+import {
+  dataFetchError,
+  dataFetchSucceeded,
+} from './actions';
+import { DATA_FETCH } from './constants';
+import { makeSelectContentTypeName } from './selectors';
+
+export function* fetchData() {
+  try {
+    const opts = { method: 'GET' };
+
+    // To make a POST request { method: 'POST', body: {Object} }
+
+    const endPoint = yield select(makeSelectContentTypeName());
+    const requestUrl = `my-plugin/**/${endPoint}`;
+
+    // Fetching data with our request helper
+    const data = yield call(request, requestUrl, opts);
+    yield put(dataFetchSucceeded(data));
+  } catch(error) {
+    yield put(dataFetchError(error.message));
+  }
+}
+
+function* defaultSaga() {
+  const loadDataWatcher = yield fork(takeLatest, DATA_FETCH, fetchData);
+
+  yield take(LOCATION_CHANGE);
+  yield cancel(loadDataWatcher);
+}
+
+export default defaultSaga;
+

Example with server autoReload watcher

Let's say that you want to develop a plugin that needs server restart on file change (like the settings-manager plugin) and you want to be aware of that to display some stuff..., you just have to send a third argument: true to our request helper and it will ping a dedicated route and send the response when the server has restarted.

Path — ./plugins/my-plugin/admin/src/containers/**/sagas.js.

import { takeLatest, call, take, put, fork, cancel, select } from 'redux-saga/effects';
+import request from 'utils/request';
+import {
+  submitSucceeded,
+  submitError,
+} from './actions';
+import { SUBMIT } from './constants';
+// Other useful imports like selectors...
+// ...
+
+export function* postData() {
+  try {
+    const body = { data: 'someData' };
+    const opts = { method: 'POST', body };
+    const requestUrl = `**yourUrl**`;
+
+    const response = yield call(request, requestUrl, opts, true);
+
+    if (response.ok) {
+      yield put(submitSucceeded());      
+    } else {
+      yield put(submitError('An error occurred'));
+    }
+  } catch(error) {
+    yield put(submitError(error.message));
+  }
+}
+
+function* defaultSaga() {
+  yield fork(takeLatest, SUBMIT, postData);
+  // ...
+}
+
+export default defaultSaga;
+
+ + + diff --git a/docs/.vuepress/dist/3.x.x/tutorials/index.html b/docs/.vuepress/dist/3.x.x/tutorials/index.html new file mode 100644 index 0000000000..a5cd13fbe5 --- /dev/null +++ b/docs/.vuepress/dist/3.x.x/tutorials/index.html @@ -0,0 +1,26 @@ + + + + + + Tutorials | Strapi Docs + + + + + + + +
+ + + diff --git a/docs/.vuepress/dist/404.html b/docs/.vuepress/dist/404.html new file mode 100644 index 0000000000..0df28f2f35 --- /dev/null +++ b/docs/.vuepress/dist/404.html @@ -0,0 +1,17 @@ + + + + + + Strapi Docs + + + + + + + +

404

There's nothing here.
Take me home.
+ + + diff --git a/docs/.vuepress/dist/assets/css/1.styles.77d89b12.css b/docs/.vuepress/dist/assets/css/1.styles.77d89b12.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/.vuepress/dist/assets/css/2.styles.08038ddb.css b/docs/.vuepress/dist/assets/css/2.styles.08038ddb.css new file mode 100644 index 0000000000..4cbd7d26ef --- /dev/null +++ b/docs/.vuepress/dist/assets/css/2.styles.08038ddb.css @@ -0,0 +1 @@ +.badge[data-v-099ab69c]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff;margin-right:5px;background-color:#42b983}.badge.middle[data-v-099ab69c]{vertical-align:middle}.badge.top[data-v-099ab69c]{vertical-align:top}.badge.green[data-v-099ab69c],.badge.tip[data-v-099ab69c]{background-color:#42b983}.badge.error[data-v-099ab69c]{background-color:#da5961}.badge.warn[data-v-099ab69c],.badge.warning[data-v-099ab69c],.badge.yellow[data-v-099ab69c]{background-color:#e7c000} \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/css/styles.a8210063.css b/docs/.vuepress/dist/assets/css/styles.a8210063.css new file mode 100644 index 0000000000..c5cfa7df71 --- /dev/null +++ b/docs/.vuepress/dist/assets/css/styles.a8210063.css @@ -0,0 +1 @@ +.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto}.home .hero{text-align:center}.home .hero img{max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#2f80ed;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #1570eb}.home .hero .action-button:hover{background-color:#448def}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.sidebar-button{display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.search-box{display:inline-block;position:relative;margin-right:.5rem}.search-box input{cursor:text;width:10rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/documentation/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#2f80ed}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:1.5rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#2f80ed}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative;left:1rem}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper .dropdown-title{display:block}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#2f80ed}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #2f80ed;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #ccc;border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid #ddd;border-bottom-color:#ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#2f80ed}.nav-links .nav-item{cursor:pointer;position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #408aee}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem;position:relative}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{font-size:.9rem;position:absolute;right:1.5rem;top:.7rem}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}}.page-edit,.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit,.page-nav{padding:2rem}}@media (max-width:419px){.page-edit,.page-nav{padding:1.5rem}}.page{padding-bottom:2rem}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#aaa}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#2f80ed}a.sidebar-link.active{font-weight:600;color:#2f80ed;border-left-color:#2f80ed}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar-group:not(.first){margin-top:1em}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading{cursor:auto;color:inherit}.sidebar-heading{color:#999;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:0 1.5rem;margin-top:0;margin-bottom:.5rem}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading:.open .arrow{top:-.18em}.sidebar-group-items{transition:height .1s ease-out;overflow:hidden}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem 0}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar .sidebar-links{padding:1.5rem 0}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar .sidebar-links{padding:1rem 0}}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}#nprogress{pointer-events:none}#nprogress .bar{background:#2f80ed;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #2f80ed,0 0 5px #2f80ed;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#2f80ed;border-left-color:#2f80ed;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.content pre,.content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background:transparent;overflow:auto}.content pre[class*=language-] code,.content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre{position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.note,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.note{background-color:#f3f5f7;border-color:#2f80ed}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.content:not(.custom){padding:2rem}}@media (max-width:419px){.content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.intro{text-align:center;font-size:1.15em;margin:0 2em}a img+svg{display:none!important}.version-selector{margin:1em 1em 0 1.5em;color:#4e6e8e;display:block;border:1px solid #cfd4db;font-size:.9rem;line-height:2rem;padding:.5em 1rem .5em 1em;outline:none;transition:all .2s ease}.version-selector:focus{cursor:auto;border-color:#2f80ed}.text-center{text-align:center}.flex{display:flex}.justify-around{justify-content:space-around}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:15px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.content:not(.custom)>:first-child{margin-top:3.6rem}.content:not(.custom) a:hover{text-decoration:underline}.content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.content:not(.custom) img{max-width:100%}.content.custom{padding:0;margin:0}.content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#2f80ed}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1.2rem;color:#999;border-left:.25rem solid #dfe2e5;margin-left:0;padding-left:1rem}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.content:not(.custom)>h1,.content:not(.custom)>h2,.content:not(.custom)>h3,.content:not(.custom)>h4,.content:not(.custom)>h5,.content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.content:not(.custom)>h1:first-child,.content:not(.custom)>h2:first-child,.content:not(.custom)>h3:first-child,.content:not(.custom)>h4:first-child,.content:not(.custom)>h5:first-child,.content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.content:not(.custom)>h1:first-child+.custom-block,.content:not(.custom)>h1:first-child+p,.content:not(.custom)>h1:first-child+pre,.content:not(.custom)>h2:first-child+.custom-block,.content:not(.custom)>h2:first-child+p,.content:not(.custom)>h2:first-child+pre,.content:not(.custom)>h3:first-child+.custom-block,.content:not(.custom)>h3:first-child+p,.content:not(.custom)>h3:first-child+pre,.content:not(.custom)>h4:first-child+.custom-block,.content:not(.custom)>h4:first-child+p,.content:not(.custom)>h4:first-child+pre,.content:not(.custom)>h5:first-child+.custom-block,.content:not(.custom)>h5:first-child+p,.content:not(.custom)>h5:first-child+pre,.content:not(.custom)>h6:first-child+.custom-block,.content:not(.custom)>h6:first-child+p,.content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.custom-layout{padding-top:3.6rem}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}.theme-container.no-navbar .custom-layout{padding-top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.icon.outbound{color:#aaa;display:inline-block} \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/img/getting-started_add_entry.5ce15d30.png b/docs/.vuepress/dist/assets/img/getting-started_add_entry.5ce15d30.png new file mode 100644 index 0000000000000000000000000000000000000000..3641893a2d405a69c1a4780704c1055a97d16e72 GIT binary patch literal 125813 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/dist/assets/img/getting-started_allow_access.ea852994.png b/docs/.vuepress/dist/assets/img/getting-started_allow_access.ea852994.png new file mode 100644 index 0000000000000000000000000000000000000000..3c87f056b091c7386a23a6916efdfc0def43ab67 GIT binary patch literal 294849 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

EYuy<$(wiP7Zebc?)RFK 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

Sv)c#xA zq%;$rdfqOO3=&Rmxgk!%H*|y9x14GIgOBW7>v&^0!i1bLy!93fsI!~re*Y*4+(hB> zhaZ}L9|F|S%+!cxSm3Z_@QOau+Iz`N>9^AcWt>gUZhZ8yf5UBa;Sg4 z2B1u8a@VR8uft7Ax+WD_HWNDNCPqqY(Fr{u5dl8_7%}13!OWJXD0exf+zT=_9~@mT zE;PO*fy26r2aX)wE*2y`Wi@tJ3AlqG&0(d!g4gi^znS45cK^)*{vwRXar6u|R*jPa zkhFtCV5H`F#_i{)W*6vj^T;xc3^U>_y)`U%g6&3Eg}id-^hnFfgI-+gvROcKZ*LoI zBD{NTAR!pgUwEHyYE_EnGBb9Ob*(JQubMF)fGXZx9P`i34qr2WI%DHcHjq z&59O~2aU8{hZ1y-cs=ePsX;9hZBK4N;p*JVHG{aE;a^FW`hf&5zf`Xj-hjn+>Kl!W z(VC6%Zw3E?_X-Kyt&U?Jxy zCEuaMdc39XR{GkWoAMD9>Wh5~fUOf%GsOOPauzSFC*@Rh7a{^LxEL2IUSQH6vL0aw zcV#JJXj!;Rin+@gSg+~WHV}haud1^131jEFrV#mbQSl(XC}Qc7R(f1AjUcqyuK!UE zN2Z^)pWyPboNw<9vJ8@>kw0IZ!-dv1TvcpDp_j3*z2qp$Ub5vOXu%b*QqpI}Vv5ei zQTrK@=vb*q5A-!n(0T}h*xEPBo|~{oZb8e!+{&GUxQskB*p%TexzSh#J;gU*>So;Q zK-#1ybbV(tCOPRj3si~%nZ0l?zJtg!u z*>u?o;`LcNs?&krmGwD#hFQtJHVdWtmi=}@$thK$nb`N6ne}AHU5dXAprSUjAaUB~ zos^Kr6~7)G!qY{3qLrAU721}1yn>SIyV9303Bz%XE%#HB5@5ZC@uH*uBP#4qw_yuFp5^>!P<{US<=TR*!U{=lkp5eQ|9ri?k~W+qCZ>#|p%DQ9W4RANXjGY>IzYyBbe^dgEo2JD9)FEcAyC?F1R!7Z5KPm`q2 z(a5A0F!G|M%?j$OVt*eM9$`=j9T4-iEm&gWl3CJP6y@w}>5{QYGjkplTS*4_he_S| zPT*EL*Q`AYbxBypx@|7;@16D6EwwrVA6hcrumS>WTv5>s9er9B->25&$fQ)E4)Hey zkkV(8rk&NH*xqIbjDg0;Aru-{2xb8d*O!c31V(vHuSXbX&9TMtRUKu`%*iMIeZti+g12j+aHww zpDp0qf+9eOGdq~sXo_q{SJ-BzYD!LXqjKW|j}HY^@0Hx++MsP>>HoU>Ot@B_vbA*E zkv0XS;IWREZW1r9R19&&{A}>1zmDq67^&ET)vYbzqFqI?`jVq8o&J#=~ z&Y=n~jU66UZ(;{Jqn8T>l5Cte+~Gkjbilhka6Bj9dvh(o=1bo!-`P z@0H-JnN!JfHLkhNGG@R5!+2DPTrFG`i7Z_sdin)D9#Ip3qE!5s&(4rqf-Ixlc?K|{ zSJvV`U!1gCaSdGSlHEcyl@Euc*!rSu+WZo2rKV!Z@78aI_=AZ=*3Do~)P=5+b`8zo z@}>D}^z&|xQXC%wX-6I-7|EOG$^SY1Z{H_UaN53J!E*`h-1(|q`-=8FK7CbV_|~}R zO8YpA%VB=C`_QhcJZL%HJ2>Ut-WVxN(zChbs`5wbeXn}-&dxA%LxvBK_}l(@@(f~Z&hhkSl^ALE5znX z%6+nQ%cBqyf=tsq{tDMVVY~%Yz#l$-SXr7%m{zSmPywf_1}j`o_SDimsTNw`oZ0sJ zZprevB(L4(f!kkj>$k5X9O3PE9KPx>#HhIGeWg%NGE9#S{Ltf<#SDnA9-;tL1{a)YCfFWq1S(c=ob zoUr%2*9rNJF;(==sA>LS6b~-kthsEo&|(F<`mp zPc_H?Q}oLc4cA29Hp|3SOE-_CBa1tYeYeoC$z44a6vtm(s*cB0GTqTFu8La-2tDo` vOFHjBneV)>{1uJ-4L$$={X=cO;OdtukxSDh*VC%D0WXN5r9rix%TNCWmbOdL literal 0 HcmV?d00001 diff --git a/docs/.vuepress/dist/assets/img/getting-started_create_content_type.f4e658ac.png b/docs/.vuepress/dist/assets/img/getting-started_create_content_type.f4e658ac.png new file mode 100644 index 0000000000000000000000000000000000000000..01bcb1703523778db72249385ebfcade47a78fc4 GIT binary patch literal 148411 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�SJ>;1$i03P{X7Ky$}% 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/dist/assets/img/getting-started_list_fields.ecdf11cf.png b/docs/.vuepress/dist/assets/img/getting-started_list_fields.ecdf11cf.png new file mode 100644 index 0000000000000000000000000000000000000000..eda037d52e758a57fe2cd5fc3aa0aff402a70a95 GIT binary patch literal 138253 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ⓈM0*AhHr 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

582Upqb9nCU_Hd8^Mxmwp|OWB3j#d5%k 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

#07TUR~q&$5Xr`#~mqY4&-@9xXfL4!+Ix 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/dist/assets/img/getting-started_manage_role_home.11fb8455.png b/docs/.vuepress/dist/assets/img/getting-started_manage_role_home.11fb8455.png new file mode 100644 index 0000000000000000000000000000000000000000..30844f5da0cc0f40eb2a5eb02aec9fcc4708b011 GIT binary patch literal 122683 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ℜ6lmhD7IeD=ztIth@F)o}Ln4Bs2wk*J{O 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 X@aJF5Y2+)2->+WX{fchq+aLZ94Q)kJ literal 0 HcmV?d00001 diff --git a/docs/.vuepress/dist/assets/img/getting-started_no_content_type.144f7dab.png b/docs/.vuepress/dist/assets/img/getting-started_no_content_type.144f7dab.png new file mode 100644 index 0000000000000000000000000000000000000000..4df862022e0e8baa26e0eb84fd6a3a1af3d6143e GIT binary patch literal 130776 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/dist/assets/img/getting-started_no_entry.aef6f603.png b/docs/.vuepress/dist/assets/img/getting-started_no_entry.aef6f603.png new file mode 100644 index 0000000000000000000000000000000000000000..dfaae83f680b3201b43c4b5b21a616fd10ad0360 GIT binary patch literal 124676 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

>oK^oh%a%pl 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⋙GbHBZd}Eva>QgE1^r*H!vTssb8y{pgc)(ux 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

KAI=d(1GUF#4j@mcYMxOR@Ho5A*X>9y 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 A7XSbN literal 0 HcmV?d00001 diff --git a/docs/.vuepress/dist/assets/img/search.83621669.svg b/docs/.vuepress/dist/assets/img/search.83621669.svg new file mode 100644 index 0000000000..03d83913e8 --- /dev/null +++ b/docs/.vuepress/dist/assets/img/search.83621669.svg @@ -0,0 +1 @@ + diff --git a/docs/.vuepress/dist/assets/img/terminal_new.3f7e23c3.png b/docs/.vuepress/dist/assets/img/terminal_new.3f7e23c3.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea2c51cdd665c34223d441f61454535d2e4a710 GIT binary patch literal 149517 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 z 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 p|z=Z8++4des5H27WcBe+xPty;QQ~x>5MJA zN?e1gt4~t4knJ@uq#f~3Yje<_j+A7q(2L+gHys>}v@IYBbI86=6vn|_#6USW&1s`> zvq*-~{MdBi!_Y_fUwn%=G>%Ua(b3SgYzU2esrW`t_)=w!A2I8hi(k~BNzTph%|O!G z1o7kVqP{I~T=TH;)rO>WR=D};$Vx}7ykZXrIY`?1oqpKv!C?N)ohhf>)GgLg2ix+{)j3NDAxYHm7Tj*LiU zC8zQXpHh1iaK!baXF;^P)Q+YL^8z>WE>VG$uPfHtyXEvpXegNaK=ixNIatDRYv(1w z>Tu=M1!FDT*t40>D4Vz-jRnxCTw>raV1ch4?OHSYZEeKwr=`Nz;@W3lqxjD38cUGm zc@?;ZomVM4kZjWT=4J09e|??#qDRh+86klJ0)AqeDsSH$ZzO6I|p z<*^YwwkrxtlfN{FJId$=LteoKy@Xe8l+eCtaUZMUe0Q_>8xa3%dWOW?Smf@@(_1>|xF=BoZ7r>V zih^C8k@09rw9&NjNM`HAJ;UP6WKmUdeUI^)zzKnCZXN#BBPgJtaXR8VjH z-U|eJp_hhW`3?ZhS^)()AgjxBUM#+{i7JJf;m|(SV{*iC7`GVwW!G-fHK!f8yu0ia zL1Wi0O8j_er;w^*<#6q(-Eudyxk&k)dvr3FbnxD{Y6G3V5Th(E@gGE>r=EoZ1&aTyb=(CIPy%LEGGn2YC)2g#Xh-g-zf5Kio^h#0Vb8c?QJGgv^D9I9!O~*dc z_n+4db=a(Knd@lUI1OLf??rdRqzAA##$m~T!ItX4v0b|(zlXn%9`|9Vd=tL0@SuF> z{pW$_UxM{`KHI8{SxP3=q9SF8!ERgMjSO2as@=7@eXK)b%jY>9e~ZVR_`ZaS)eh@b z*lx@Qoi0uU)g;Qfb~z;x>7&o7qMu*Ga8<*zBAy6Stnfsd_y(v8cS`RX9@t z4CWCCWg4Qv9&G11rS{jTJDL$*a9XRBHd%v)Zp? zQ=n2Dn&M^GIGh&I_s+T9IQuY&!__O+(eD=Tht`GVv=p!AyzJ15qKkMdNO`eDW*)S< ztxjm@f~(~vgy@GBoiR_el2!dJ>U(DhvIk@5ME$C2PzaAu3w56H0<+bkrRpbF8!>&B z+IUIihXHN83rxirtBK!E;3IKT*lE*e9ELA>Xw6#cw|B>YL)Z0Y1!beK|2 zj)%u!`Sn(v+0GUmgtp{r?0wG)+ZjDuFjx5Dj-?t2u5>;z(I*e&O}*bxGE=+z@>Hh? zF>S?n_-0EesEJyN0K3<`nt$?BPsom~GeY`LW z#8C=cexyu*!iirroxf-@IfDT(Y@qsP^E+prTsgN0KY()cS263UBWd^=M4Yihy1wR(^u;~PZ*yxdwBMQV37@LFX*zhd7@Jp1 zxL1LV8u7Z#emCm#hx!95b@ce`3CG#f6K>%u#^eiB2a6uftFHL^PZC&PCQDx3P^6+| z6!1sN20Kuc(9eU{wycW|2GIZ6La{+nV4OJNTh#vev-c3I(9?Je<`0+Q$=<*Xf~`MA z4WlH|w|_0cy6wervwYqaD@B>9MBqCGHa z_eUmLha--J?iwl$SmOuH4&WCtRs90cw6UM;1EA~2yurpNc-MTsxEC__1gyU{Pm{a% zoZ7y!Qv3_K41tfrjzI}AEXF>O6 zkFQ8AWxN*~JvB;4gp5Ybk<@Rzw$G?C5HM11+i$H|t)Z#h9Pf>4K=MGFD zS4x2Xc0_z+Ve;^CPFmzaeAC&r zH)&SOAl09ce#(RvW_9Ll%$sZv;+TuErsMGE?6%VODxswdhlD@RI_bMYund)4p-J)Y z^UK|8FBrxI&G`fD254N%BptXRMfyA6y!>^+VrHW`OD7V3(u&+zVW`<>tdcd4c%K|qWiVeN-#*(d@UHuavdRbYxwyX-0f)E+9*aGy%g7NxAd79M^R_{+?h zR)8|uc;nTac{3|3B8b#ihh9gq(_{~1$dW&~hTVg|*`+pbUp=Wg^8B^HA=maCPo(`L z{+8yLw%nU%b~;XKM{A#RYx4L!qiARBN<+uT^kSnWxSjV7R}>#oEavV^n~o_<%!}pL zbc>E_2iG^HnB3;Xyb8v6p&;b>73uyGvqPQO4){Cl-FV|3E3jG=NSt{@%IDYD6-8$A ziM}Tc3;0!|g*%sdsLOw*;bje;t#^R4F@b<4qgbX|w0i+~we_ zgj3^q%!%RE^kBN5YV%3pY-y{|6V+w3&$cdQr@-?9Eqo$HyAf^Bz|}9eJ!(qgt#$X1 zBdwL?&U1Ss7ia}SVmj!&>2t{h?2Edq+ISBE+BLqlJ)NEsj0NIv&S89v{r-)=^|qK^ z-|Hm)sl#i$!s^M8tI``PQQy5sb6=Vxm&JRi@U_CtF5SEY~03l)VmgPok?6?(LdkNIEV9rJOGg*pq&=p27SWEk{~ zshsu+xK`!uo)L^0=`qe{k94(UueJDiBb_@WyU%p>+*dND!2A2~CGK^#d79R7F}7_}&~#b&?mpiXVuiL^ zzUz0-4`3Hw%9_s2yLV~*T$f4sJzll+sl%i)3vRU7>ZW$sI4JAyH4R)RNxwr3zq7V( zB0ymJ?cFbjurLD<4c9rlJ@M^1Sjvb?K}i9&V_%#O@VDXxp>j9KKwv^W%qn)^dSKod z&zXq=o(}(Fz+BRPa&bFy7^FR`xA2I+*ov_&poX#23JA?vU4Z*~Ye5UGvvXsyHQ&u; z?w*zQSS?>x534JZJo?(d_mfFx``SHA_x{A8j+VpsT133@17A^?fPDDW)FjVev|!GO zaSpk8Ybz*VCIk+pUdtbew_F3Q$jDuu?P|YiVS&IPu`iO9YN4-<9?%9C=KTr=w-a>U zx1!q=wP)98TGa9q!6_dBdZDvA8+g2YUzYuOAsI>UYe2@!tem5xztOO%iJ;}i>5(g{ zPYvo|+?`rT>u!tcRKJ5qdx<#*mUFq%y7a&m!ua^hr}0bfe`_YKNy=3xM&BPCm~($y zV759?jwW}Ve0zi_k~_BdmEtX)xkg}s$bl)W;JBZCl}>YAS01(N`gp+Z$ISC!uO9~S zm3gNf<_Gh2Ky#mzm=SbJT08wi7gwd4#l@p(b(V)-)O@$Hf#2)Yx(8Ode1vF)w#Sd% z2^&>=4@=nYz<(@pqs=;{88r&H}E>*h3XZ0q+Hxmy^P!DnS5Y_ZMZ&~=U~ zMXg?^$w)_kPwAGTLNSA5GT*soGw$CAdYAu1<@TGNrrn00uAaWP$D)Z{y!U0hr18Qt zANe|6x)Ep%J=RVA_FOK>GY*^u7$|5^2Dq?7KHL# zuV$)v87)G;YDk@wxmvyH; z+DCNC>=+CEa z4`}yv-=A&{>ce#gyzlG!9)(bB(Ow`g0fkB&_~0TxT5S2?n^O5bj;D0&;&UOKs&jsE zJ0h(FrY~La{y8!JQr^jOK9QXT*zM|an3)GI-&Tm21B>T&S?!`MB-x|ORkjIq19wvF zx$R>^MtUfnTo`{J#+n;BEiNGUac;lQWHBSkRoEnIf`+i?UX)E8Lno}BElI^{#3I+4 zfNI3&k3nwNirBEEj+Irl&FqiK+lI3A0hpS0>ulG6l0Yc9xOb_1)O-Fh*YLSl?&r1) zB<4GQEh`)iTRwB9<92GwR?A(K6osZab^(~?Lx`43N6K88u3aiJR6PGUg&;w(rE0l? z=(`6$Xf0os6Mp?vZ@~Y2o^z5mSoBy+ckI`IN$MfTeL0;a0>}df-|C*&-OH1@tjNZEz4P(LO# z<9t)7Xo1NE6C+7{4z}!DSmT;`PB7%|mx|?7=~uWY(FNQAl^b2Cga1ma_r4{J-HDa#$^E{;C4O0Ev?&EmS?B4(Yk7y9}{R!~`^Yy!G z3Yv?G6VJ~f%+U>JP6kcd7|^D{9Y6D17aon{6&$ymoJfZ8y613 zLRvhR?wV;LsLY7cjgd5`Scah8M?)rEJsx>HA?sMS&wk?Y=*bD z^ySpiN#xY>vG6QSReagQi3*>Iv5=HP)q?Jb+RskLlCvl6_9`+`EvPXs$g1SU9Y#W( z`F=&aK7$yJ*x~YBtR=^VLRcW=&LgzF8*Bc5;v66C8Rt(oKy4H!?E2r|jLcAJY5>;q zX3~nlc(@|=r*1uP;EzE>(O=X3ulnXfzHX~{y&Yot8PA`{E7`H*f*9s_utLXBj&=DS zrDJ_gzB_KpdKHV%`x>CCG?8?1CJU9ixJ zE>A~q=(C>D8M)=^t@ZvOq@33quk~^1IOYK->#v>b;|kG!Hg2=fajlOF#Qwa*Lid`b zi{I(?Pj}01B&yMjJgIGOE--oi_bi(J73JTtv@z7*N{QKZl%CF>b(mX6812%scPcZO zyM}+gn73muEjSm{{0_(d1|3ohF{qgd{~=-=s#MKLTo`@hlcyFZ!j|IFe~GyU(R zVcR0evo2f|4LS4BCU^rT3zUCje(Qv+DF2x>{%p3aDE}LU{YPnZ6`o*UhbhB=>g>Mu ze4Tq1l&nyGce20G{Znc12Kby_ACGN>;e3iiN&Sy;<-b$d2256|{cgUSk?3eN!z|zd zjx%hXgWvs#`S%~ZYP0pX-nZe4hz*Ht(*5+szqFXWLs+r$|98>!pGoI0`uyKkAgiK( z*~*_?bVC=vOMkt^s+j-QoHzB!_H$-=`G4hcuV4Qkn)9Ds^sgvcLg_zK7_*aqD~&&g zS{Bb_RRjwZR-ON|`13Dm{K-YHti$}bEdEKcEIR+E()d%TWkJabg#{%G9ji1pF8#`5 zSXkOHLuN9uiBYDWk)wBVse{q)oU%Uk}{g*V1X-6z5|EYcav)J)x zXJMVkSnY$wj#y3X|Ik}D4e8f>w&5)QPrc<&&cce46$%T=|KKewbgW%$O5@XCQq4cb z1Qx~qGll(mQef#~a~?ZJht6zc7gxUjAJXNY$@5P~WlggGr#b$wi8}7DX8XT@=090F zjCI6=|BuR|^^EOby8Wx!{wEgK%eMcGB2k~UAbh#b)4%4OjmE!NTyJig-^L{t3udKb zvEV<@{l#oqP_inP#r#<4SpAuWjSKtWT9h4`ERB1=k)7;W^sK^ zH#KEJ$qI#~3l_THrSa!Tw2t!MviJwvTc=||`3HslZ5KZ$@=d93mf5>m>*9^p<}>fV z2^Jg095Y7z&0W7&+J938tY`QCV@&u5!rG8G3mvPxSrV*GsJ}|=e<~~%x_@Xof6&Wc zW5R!6k;Nof=~z&*(EV;Ye~`xC#{?FWV1>ehl7)`d`dH}x(8Yg_34h1p-!A;HD2xT= z-%8_8DqZ)1KY76)SY%%MuN~>nG2wq^aYHGrG2#DM8h;lPSQPOe6t;2cKPBz!B4d%# zCdT_TY>ym=$~BISt%57dV6FEu*Mc=jAN*NsReJ6ix{aW1E+%fZW z*!9*N0Gs%WkZqui*$Y~jWVFc%7bi`a`J0PSb~*+qwqDc-GPz-w;pez;S0vxaac5{f zUF5SYAU}Uj=BZh^0D{aUL4o*be&{l0L`K>Y+_(Ln#lxIp|NZUmalT!LY!ld5j~T7GBa zLd@cb3j;U^Gr5#}5Xkm0<5?gZZy5WhbMW4H zK==ub4RudfNr0jNzz(87oa_h}9!k*WDC*luq0HamxGF;caneHA5ilhJ_7v?f0K%~@ z7eY;1f2RD_;EOxXyPtfM;iIt)_~;?zm?bL3gHa5tL0#+r;A`mkEZfiL&XFcQHZ~F$ z0EreM5r^SH0OsCIAus{V2c)0hw1k0u1R^hxehCLUiW340Qn0FDb^;i?HxWqjQxchN z@b!r>ApIm0wHJ_nX7k>ATS+GCh9yZl;e-=P20-3i1|l|Pf|BN<+1Y(_iXcYOVYp zj|mE9`-lDVFR|?;tP&8R{w+#^o5lw~egHspi@0b-K@ee*FZ-`-F%$`*Jt)vw0OTf9I^48~O)F5A zA-L~nr#s3Luva)}We^S;6OtEBNRLUzK_gjiq2w6jOmrxU1b5C&f2jo^Q`iwb*cJ|& zsS1+?rtOxb0_n*pye#wkoItvrRtWZII3U(3&9fF_2G1^2(5FvgFk%JbAg7#j= zMKz;9QUJ(n6m&O2ij*lx84X96;Lvr4RE9CCTYjQIP4w5l8c zG6!rP^W~-q6YZuMQ~^#}2|GQ9mom&CkU3}t!OZDHIdWLnZTPwBFHxck5 ziv#zP`vFKABLILT0}*W?lHEKCqz7Q6i;~3i!y$7es$1FU`MwHe=ItJmwcW4UqHh`B zwF@se=+TAZ)9&iLU0js4B`Yo=`71#CsL@2VZp(r$?`*JzP1CtMqL!$ZAxF>omgkba zv1S=9LtcE23(xQjr87_VZ2U*pLuT+nGUP=_SmX&DwR(g0PE+bts2#9olFUs~q`Q|IJCx z;?GNP4q7P&EKHIcPyjH(_7ITEPf-k~^Ed_t#6@EoOuHZ@Nsb@~Cddg;P6H9ba}e-q zIHD4TRaPK$rVEM|rE`bQ@q?$EfrQu40`*VY* zO1HU%SPc4<#(HS>@sZV}_eeYFo~5M?t3JM0z=k}%DcM)sO~eQuwkxg^7l&+XgR0lU z0|wogH|g~8YF0(uk?Q{m1B;1aW)-boCOdiqinHoG44>)=k3Co91C_+XpuE1Wjj3t6d_!R~R?ZRzb-7^5l zAAlW^qU~Misx$#2mU*%A-=9kh+&U?8HC=S(T5$WdAi*~V3LVe+rrIK;U2ujjpB!8& zuewzEEQUyppMY?ElJU7=wu857N9C<9spSXx2c?%Cj32;l52?nhrY3z>wZPHu3;qss z;%xyoy_?;^(^%oRL-HcjPba%lRHbV_rM=S$581|Vw{MzPNA+P~Yn1-hk-%9J$e+)h#iA4QKypo-G3R;jI8nNbF3Xu3nl*QaQ!J0a#H0YQn? zwAY)@SJ>ESB4SEA8kGV*i;Vc!x9`%CD-<2TiEHM?3lYk zlqVc89(Ig62TYBJQp*XuEJX1v8x+Kx0b-zo#0H~6@UeBc#o3DsDU{K%#f8HN>G>&D zG?i>(rdSPhSn=N3#6Hr5BXNBlnUHKh}6<%Daz&H?7C zeT|8Njnt6rg@_^eRucK9nS;ZruS*p|6sxqBC?H~Og+>Q3U?r$LYdV7i_KE}M0l>c{ z@d2Q@OPCJ?>KQ7dNzjPZ2(I5pd=vknQ?;Wrvm&ml zg3=BzDtG@70OpqJBr}tXurM;5h;MAyC5*L$;hwLh|Yu`U4!#fb0CNcYo+ZYS;n(!bS7lgwlZDG-VP z0J6r7g&X3bgV2U}So~BQm^Knee~Ya)!+}~R>Y^FFmcxlBFkj@yPle^X-~D}Hlo-`8 zEI;;^bkgg=0jqwaE##nX7$?lvAN**7R!Iz~3Hb2Dh-Z$Tw6L1qcA&yD2kz-Hl7H5=&mv+f}ER@#n-`-BU1DC%xsnn zZ0{7AzmAj?p}1{^Z&05>wBF8?F!|fce8uQ0)2h|9;>k4(vV!oBh0sp2QVrGAK_896 zj-sIGHl*yb5IrW31gU{i;uY7Lk+{6(3#fnVljZpztf)ST%xz!y;7k%XkTNFbw^byp5p}@Cd(k z{<11QY0pzWpWp4aEAE4hXFf)FM&}cJdEVNx9J+!f3v`la7FKSIE$m`POfjf+TS;bh zLKJ4g=4Xhda6=%OL^=8g%cO@44;mi?8H|2JdGe4VJ5u)$bOQ4r+WiIw-5q88Jum4G z;<+3VwRn+#S)<1&d|9=x&JR=tKQw^KvHPuua3^B@pKWothFuIxL zu8A}Pmv|dTR$J94XwoW?-3K%Ah+weh{9Co5u-%x7+PqL0k1S+WZ72iL_N$6uW1|=N zGG1RaxVXKR&xr5ai^6Sck3&xC@SG)ay1cnb=fE=*%WL+BG}-1mdZ>J<$)i-@n5TJm z=H%6DGMW3u=F7AwF`ucngyaVEoS%Ro#xJH~tvuRcov z)1+Ye`0>Wj;;R&q*};^(m?%odL-*sDxM;A-h?)MlLg26UB<6?~(cJgys_*3wA|M|< zh*cH)`lx=yM6$^2KwbeRv8oD@XsM!$xKIKjRqP{}=@Y0rlta7};ekpb zG85e7z9`O1nYZsSTm2!8iJ;t&!^AxVKc?u9P)#wC+%Byq?Ek{|UPfp!Eo#a0j&lHL z)}U|-8eUCYyAq0cM|P&F_X!QH$LlM z3*JUsGQm z*Tl6wE+B%SBylNj5F+(aSBkb3#biXVspVC)`jDz6D1Be-*D6r7ph;#B#KetY{aV^r zHH!MME(Mh;DljZjc!d&h16eX8s6mztA;3&BlbPSeMBk4OeQQ&0m<$x0eBwpVFQdP<4!HW1AuBPu^? z{hw2kOgOk_Ce=79HMZq`)|9200bcp>lxxC-IG+TWXVUTL4;LQ1c$W=tKf3j!HM}Y6 zNuT|Ffo^W5dhVOTZ)lxp)zXX`{k|d#O$tV`GV4 zHzp4hv2#4hC~bFML&Rb=H1KHIgSUhxl@W9x9= z8kOcP`)|c@zTI_G&d{u0X;Hx+La~%dYDv7D ze^#q?W10uYyE41~QK3+BT=+3$@~3FwK;2BbN->pbpDVX1_zTSDi*Rxblw*B4VLjg< zy0>W0$+sovqe;!#izZ(Nr~X^SO`^~|Rgfj?rI0RDhn>;(Qf8bQY;7izMf_%hJ0Q>n zdz07%GF+p`;H#U07j_m(^uAm5g-Wtmqc~|>_`)&+I&OXW5pP&vx=^=j)4SSvVaoWi zDQ9O3Yiu_!HJyzigzb<2Ba77qA12(Rjo7zx%#BgG8!b^kh_DQHW#W+c*(T#u5nB~p zQdO|Qb^#&h&lX)bXWg=e*DKCNZ&SNLVy1od+j?|O+7Z*;B?lVz%$wGCatHr(o#LrI zGaVwO(FK;EX9TJzgumlKS|cJ!8HGROqJASH%+HnCku5niA4GTfTXw)21TTxEE7#cl z3eDDQFxRrIJN1dNMBDHV&;EI{UOXTF-I7Yt;SsJWaTCEF3bLg2V?wqR8%|fBZcq%{ z3!7}^vz`(6t8Hf+j57!L!cGh_pntzMfQ&;2nomDct4JjNFkehR&*eXm`Pe$ft)2J~ ze#a@{9~&Y*84ykGyR`!XCk@i0>!`(3@#eD)Y6<4M70bK-K55|RSD^P z{L}Tpij!7L9refnq|QInz%RtHOpJ)WQO^`I`NSYmH9;i&#~ibXRHVh;D!z?c|H9G&Mv0&H5YF# z`>lOX;+`m;z!HA>OnF|KBj@C@b#KcHlC zpxOp|iqR51ZQ%KC7j+<0(9zHhG*CRBeiTDmHrOgBA^VhMl!~-p6rFjB3)C^z@Os=d zWn}K4MOJe~xRN1@QGlFm|*M&@a=T-K(j zBhYuVTdS&Gaoq8@2;1+At4VRp3dAKc%ag zPG2$$rM%E%F{FF+Yef`|6=@`!H8m$~vKT1#<%UK)1a12~&5am$;s3+augjg;;-#@I zo-k6`dRF_=@*mnCXDbHb!#@E$XpJ-ugZyrm2Xk?b72#{Bk2;NyGO)5gr_1B?$W9(o zT*X=YI=G(?muM6yDL<}F9QIbw`|5-9UM(L_Mcirp`kfvn{kgC>#Ao;~_e`OfTD6mU zeODIx3udq<@6#eUGPc0t(M!FD`)5>UZF@v{*|HSLBb2_>jU#UeK+g#7;mtV zf^*H{f}s#YFmNaz!`@c;aY?|7h z-KG6a`}Tr~fb>1>J^rNK=$5v1mr8R1wNla2f|72f~3dNzD`HVpk1 z&Ev0PAm)VDIGlBkv!4I8%UHJMZ*TEj%$hAVEl(EA>NQrvvcI8X%2n@gkca)EGQ;Ji zSnnQY{4;{2bQv5MNTT0Vq1{AEB%Afnr?SvXXvJK4oPj+ZDFfCKG#v7Rm5&kdw=)ZX z7bz^_EIQy+dFEDH&E?%=!>6pCj8}%*4^$pbi(gak`5H%7pFNkq9b9>SXnpmr(5oe- zi`M*j@siv_*Xe!(4sD4ju1UsPXC0zkuTnqYaDdJ?R#)8&CZ2aP9l2Q!MfOrZ{*F&1 zy=50v^J#xG<;8+P9L-~w$_n_a>GFrhTnP_d_r^8Y{fF=SrbiDfd^d5`;Mq?1%U=j* zP8gZhzpVYvCm#CpLenx`5cbMfNpwk!M7ktES8an2;Fe}@(j6=sVBP$AoxZX9M9FJ@ zs~6v-=X7YGjT)#}$&vI_@1jpqaL(j4qrBQE{=-VUBW4W)ICiiiB z6`8`-(vlQOK>MAiLK#pb`Q8U!MBq~VwMqUhh_uVm;&jP8on$}`A2!%+E(o*KW=YZq z&8JUD$;wIm*`jOawp}t$s|;Whc>uT9A@V1dk^jZ@b$G70@%-(kSZ(Fm3&Qpiz{sSI z$2~x@MWy@_DgPR7#LB^KyUZmQRF^#}TH~Doi!ypX-RTc+F{EmOK{5k=e@P+Bv2JU` z*Q0F}{^_5;o65J+`1w;_-xt5vx2!ctFN*C@KcFBkp0ZDJs7rphOAb>a35IN}NJ=`8 zfxKQw)ANC%Ag3zlh_DC23k_ON>nzLM?xnxzD9!K?-d7YMpv@DzB0<22?&u)LXd{h#g@+YcQ zAdYQmthub+rtT8eFxF4rO8osVe0nXyaUIK^q+Y`-Maq$s5>9zNw6R2$M|7p(QAdeA z)Y&fi_Y{0LgM%Xa;_g*+L^6nKV{PE7v0Eu3p8@hwmPcP9M&F z>-i?dZf#WU?&NFs$F@X(aHBpX-Q4lGjQUc~yszW`m@fIZhKfqU^5$2Sxv;tLCE(yq z`ot*u(QL*gkRf-`Cvw%J@o`%VzWc!ai)>%VjpG}`xvQH%JMcr+=4y%MG^`}+ab%j(8(frhYv&#P6J_&*ccB-O{ z-lTe7CkkgHU_vS-oBEXtyHcY%X$wmnPB?)awwBea&hghnRWMlJwx=SFyr0~tt9$=X z@kP}-?1m^)zNo*jN%S5u(>U1m4f9JnTWqjz&`H@jKp;m9Cyh<{=Q#G6U z?l6jci6qA$38(mV^wc56dbAq$V0;*3nPZ_a`J-#SR46(BMRY??bd2>z zz4jco9_@m~j1TLmCk|3lZ=NymQQ|c`o*zXuwZh*oLaeteIQ*3!PT0pzF*9=w_C0d6 zbiZ6;j;p|8_1J8KHjixnn89Pa#2P#oEO8e8%nyh1nK^x%+LKfVmO4Q1?r&ONzv&|W zhB5XdBai=(E2tyHjeE$wYbFp>+cZ=hhC!VOJ>70W2fF@`dF(~j&FQRx=vV_M5WZ#> z3!oS)&q8Fuk#---j|>~p3LUV?^vAl#>&xBb2W`q>X{9J%{(JxYc5Mt{Nyq9aMv7ib z2mky6i;5{{FB&aI7i72pfC3%Ris?8#$he|;=7i&rm$mFq{AVm2S#4j_g4be|j)FCV zUFTuVu~^oj+vOgVa^&u9bv6~(AueV2igbjHNiUWByO;XVlUV9W3S61q7_tz$1VIIo zopgs1FeUZ&|nHC$uQq5T-A!5|ZD zkLIrkd?LQ4I%OBMHn+lDllUry*H8?>3_Z3I9MV`g5FL66*{@NbeySRUlw3ZEU`$t0}cC>sx-jQd*CT}8V|2w zb&~JoY-(2qa1Lm12D?wgrsft5ZCYp!+DQ)!&`s8?bC4&+Bia(q2RRfpZ!q?sAi#uQ z=8qfY*979^Q+w-6xw--Rp)I@=TU`omldBKmMh4MqqhA+pHAJuNA!Z={gP>gcqXEB+ zZG*lO;`OfWZ&!Mb!h;sOko9v2KZMFQmDJaO&ya+cISdxYb`LF2Jv9u-n zH84)^=pN!LyYNK~-$a}+uJH|nzd4qK3RcNAwvwCbNGiPx_9jB|(C-!_@ILnU*Yt*QG`ZGy z5DGI8bC}FE_Onm139DcY?PK#B4(n5R+TV%$f6?pJbik8Q2ZJ@0SIZ^s(S;@tGi+IA zW+v$4Dxk%eFdloea}uO`pju;h7oe|(dlw^OPGQ9_WNd2Unr>O-!Ln5X%%=ndS{*v39sN3lvd$N zXy0U(ybls+h-3A$r1?Cgb8Nhky8d(2%oPrJ>4&MA?VCMpKEr;!^IOG01EGn8d@n+m zQO|!R{P5`gayCc?dQuP#+83$OuCbRtMC7%jo(sLei2CmIRxG@p=GbqEKfGl#zC2ex z|6U6kUZmQ=8j`V1gzy*4%-l@v0i7>3TI5R&f2%?JyE*Iy+n)T8}|B0WlJoCg03TyiHt9>VAN8Ve~xkI_({imGR?KHQ$00h+XypgH> zOWGx~+oP{iyY{g(z`@_DS9p<94I+Gjg48du7Nb1#k@1=am7!sRoM&w;H*uf+Xz8cP^1+T=7_+@np zD$gl*FfrcK9C5nvv(YGQ=K_KV1M{UGmUO7meMxfm(S4{>&3=wZ3^)&wbODdIo#74z z_K4eq`4^mGRdUtK8`3To#-bin&PYTF;G47*%Oi|v0}5JNq;a(ftYPndN+%wqg#f?m zvLpqlXt#4y?+_Q#Sd~M(-oTcmCWc8yYpA+2W~L#TMT5Gc0uiN^H>9}C zPeDBC=}xBzh@aj~IEbItPd&7AO<>7lp_%z>5cVWFTlM%-^JwVm!Uc%xjW0}V$7@l_ zabMV&h=Xc_Ol->mdQI#=6(Cj>nwg=$sIX^*D&+B#LQ%P#|OdnDHM3s|Y~lV1-?1 zN+UhSbOuY)zMBa;Ov1T7?Nw3sO+ArjcW>d)ZAHb#bIE((oY)pEMVK4=HZ>XeHy3rY|KKC`90_S9MzvVY z$JGE*weP8kElQ|IH%KoZsbbpwDY2|)UOxh974KRVzB!V zVY>UvSu~Q4Qj*(_W2@lUmx`a!EGBuV1Wj-bENz-TOYlSy59P~a+wP2F4ACJ+iKXLY zJVZ=;tYVZ_LAR=i@5+8(ep2mhcK6>4pG$at09M#0^+gmTTS|NZ&v*lTC8_@!)L6Ix z($Ku2)F)U96859Xu`|%QDfCCv$HzXyw%a{N7CI)E$1|mt5+*q$na#v@DRvG=)bc~1 zYZh@MCj}KVCWojxqowYG2E}Jkrabn!Vh37fkL$?0V|qZS4hS$$zRnr-*9Mh!XKONJ$+yvEAyi70|*_Tz^rR0TAQqJS*EvTqQu z9g{O*rA=T`wK(^{Do=c%4z!PK$g<~*2-}-etp>Z;ou+tf)eI<`_P3-pV(XC_d*|Lv zj?;`XZO^J@%AvO1soLLm@T=_EPwjuDBcjeN233Y+R9n;>>$X$Kitd^cED#|ayZfD~ zL*2SAnQF+G1w_ZDl;Bq>KYVE&r3x)TLGcs!k81O({ zgWrXi31ioDHKBu&@fdsC=hWOC<9_;h>XW(qbpT$)Ic)Cv3mwazK{3jaxufCp0d>oj zvGNen3vCVUKZI4ogj3Qp4}QRpu;1SqQLNQ7#lXhY)6G6zLK8~<5#`DUlJ?ieDvDB1)shnurw^ybCS*tx4Q(0?#N>@u9Vl1iMQtWnhdjA%E zdD%UV-IIKf7Nr6Dx36A%0ftOr&V9as-2IBajg3~rC?lgw@09wQvy{lTS|}zyugn1{ z`Nr3`ZI!U7{V3rIPcu_H>CLs!*??|P^6?2jC(+#3Z4oi^x{>G^{gz~Pp-KKLvP+|u zbZN8c6|WRA&mH-A2D0On+;x4iw%Shj#FgH87@SSR_1a7r>O0Cfuqn;qm$fUpni%qr zd%go(cr3UwYQ_2JCTASa%*A+o);hW){+3<^xE}PB;4>%248Fp>P=^TLh{;6D+ z3ITAdoN!ms|MEKasZ_6%A17DA5%m%uYMc}1SQk70X>K4uI1~In<_lxP#ztQf>uaqX zU$K(wcBAGJ`>)4UhHpYV7GFN%yc}}twC>bI2<*+q0a1tXptM(mmxG6#LdUh9kW)692}`1Km09_Wm$Sso&t#ZDCKw@@F+UJ zEIH|=68NI)=iUNe3Dpx>cF?no?-IQ5-42KJc(ac88z-9Wv1&1x;d`^;;8#cA++0&S zIty@^W=xUaz! z;%a?|R>O`5p+_v4fS@mGeJ$CD<57#3d6dQ|fuvELGSBgB6h)J=T5F%IS-eh0;Jt}Jni}MDYPpSJMZ^nazS1U)=KcJi4 zshU=jf2F4w^RYW%U8#n{hMWVy$6@Ek23!9VCnXKGT{X@VN_(Fqc_5BsJbN3H!mN&$ zdro7wE$F=dR+rJVAghSE-Y=N^li>|}D?EeOtaVhHW2V&&FSs&(OyYRgtmmT)TeEs? KDg6Q2~h=?H35-nkl;|Od-UUIlh+amQ=%V-D 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≧y%|9oozo%$=7i-aE{(uO1xB58m z2IEs|CE2Vze8p21#8&Qj7(^qhCp@N#=F6fsK9rbXh_H3~N{3s9z|by~Cw$#P)+MgqKHT&zZY`*)^)$cDCC$1Un+3ki;g#&3<(*5|lpw$~4qs;uv3L>a**JWILHL+c z{>851hX^5Y2wC9V_OU)AZHUWeX4Wl^PZH(h5MSGv zUq`nuUu)%7o3pH#RqmP5EG&(jkTEZKsDJRBDl=4hSXz|!@zMCwGenel&WOXRQ1(+F zS$+j7#=@@GwCI>ViLO?cahS8qYeqE>DZ`qTV@dgH1rT9d>Dr(B9$wuysmY^G+zp=+ zPsWL*?eGb!D=Ij{jro^5AsNrZKJM?Z0Cb`8e-a(~BGjC(pJt9%yY<{j8G+dQ5qW-s z$;U|pE65o}vBqT(PqN=xdJ~*&xAWxs=}oY3aV;%tLV4j5H$1rvV9A>eW|%ZK`S^%| zZBzZZSZq`ArsdfcP>(YL5thR~w-i8YCXEHUOezbz1aF?-J z!&@kq|8sXe+tIR-0}WNmg|7Zp%Tox5XiY^;Bt&jowYzFkQKWaG5##%9Rj#Shgk>-4 z#TgaJ|Jdm8h2ssUkH?=$O_DID4BN6rf+pgKpD0L?v|{D)sAAOC)&|MWrudCY3+B$r z3K6+AwbZZ7`GcA12urH?aXqL}%@<1A|=_7 zTWlYuQvcau{*8G`5+|XenU+RBC-c@^Uo7`yt!1pfgM|=lUyGqwn!EOytL`tQH%^Rn zRR~$CaeIjr?tF;~Oy5*kDLl;eGUrtc%0Dh;zGk9~W5KQ5`qc$RmWo~9tM9z3IB+Kh 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≪Q56>xn>wK5};YJ!DMqhY%^ZOQnd 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/dist/assets/js/1.77d89b12.js b/docs/.vuepress/dist/assets/js/1.77d89b12.js new file mode 100644 index 0000000000..2ba319f5b9 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/1.77d89b12.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{174:function(n,w,o){}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/10.f9e7d997.js b/docs/.vuepress/dist/assets/js/10.f9e7d997.js new file mode 100644 index 0000000000..6d4fb11193 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/10.f9e7d997.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{229:function(t,s,a){"use strict";a.r(s);var e=a(0),n=Object(e.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"customization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#customization","aria-hidden":"true"}},[t._v("#")]),t._v(" Customization")]),t._v(" "),a("p",[t._v("In keeping with the Node.js philosophy, Strapi aims to keep its core as small\nas possible, delegating all but the most critical functions to separate modules.")]),t._v(" "),a("p",[t._v("Generators are designed to make it easier to customize the "),a("code",[t._v("$ strapi new")]),t._v("\nand "),a("code",[t._v("$ strapi generate")]),t._v(" command-line tools, and provide better support\nfor different user features, custom admin panel, configuration options,\nview engines, etc.")]),t._v(" "),a("p",[t._v("Custom generators are linked to your machine aiming to have your personal\nconfiguration and features at any time, for every application.")]),t._v(" "),a("p",[t._v("You can edit your custom generators inside the "),a("code",[t._v(".strapirc")]),t._v(" file at "),a("code",[t._v("$HOME")]),t._v(".")]),t._v(" "),a("p",[t._v("First, make sure you this file exists:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ strapi config\n")])])]),a("p",[t._v("This file should look like this:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"generators"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("At this time, you don't have any custom generators on your machine.")]),t._v(" "),a("p",[t._v("In your "),a("code",[t._v(".strapirc")]),t._v(" file, a custom generator is an object with three keys:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("repository")]),t._v(": the Git repository to clone.")]),t._v(" "),a("li",[a("code",[t._v("remote")]),t._v(": the current remote to pull updates from.")]),t._v(" "),a("li",[a("code",[t._v("branch")]),t._v(": the branch you want to pull updates from.")])]),t._v(" "),a("p",[t._v("For example, to add a custom "),a("code",[t._v("blog")]),t._v(" generator, follow this:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"generators"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"blog"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"repository"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"git@github.com:username/strapi-generate-blog.git"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"remote"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"origin"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"branch"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"master"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Once you have updated your "),a("code",[t._v(".strapirc")]),t._v(" file, you need to clone and/or update your\ngenerators. To do so, just execute:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ strapi update\n")])])]),a("p",[t._v("This command will clone every new repository written in your configuration file\nand pull the latest updates for the other ones.")]),t._v(" "),a("p",[t._v("Then, you can generate your "),a("code",[t._v("blog")]),t._v(" files inside your project with:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ strapi generate blog\n")])])])])}],!1,null,null,null);n.options.__file="customization.md";s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/11.bfb9de0f.js b/docs/.vuepress/dist/assets/js/11.bfb9de0f.js new file mode 100644 index 0000000000..9f24d5a777 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/11.bfb9de0f.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{228:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),a("p",[t._v("Strapi contains a set of tools to send emails. This part is based on the\nfamous email node module: "),a("a",{attrs:{href:"http://nodemailer.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("Nodemailer"),a("OutboundLink")],1),t._v(".")]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),t._m(3),a("p",[t._v("Options:")]),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),a("p",[t._v("The email service allows you to easily send emails from anywhere in your application.")]),t._v(" "),a("p",[t._v("Usage as a promise (yieldable) :")]),t._v(" "),t._m(6),a("p",[t._v("Usage with a callback :")]),t._v(" "),t._m(7),t._m(8),t._v(" "),a("p",[t._v("The email API is a simple API which can be used from your client (front-end, mobile...) application.")]),t._v(" "),a("p",[t._v("Route used to send emails:")]),t._v(" "),t._m(9),a("p",[t._v("Request payload:")]),t._v(" "),t._m(10),a("p",[t._v("Response payload:")]),t._v(" "),t._m(11),t._m(12),t._v(" "),a("p",[t._v("Each sent email is registered in the database. So you can retrieve them whenever\nyou want. However, you can disable this option by overriding the email service logic.")])])},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"email"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#email","aria-hidden":"true"}},[this._v("#")]),this._v(" Email")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"email-config"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#email-config","aria-hidden":"true"}},[this._v("#")]),this._v(" Email config")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("To change the STMP config, edit the "),s("code",[this._v("./api/email/config/environments/development/smtp.json")]),this._v(" file.")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"smtp"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"from"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"test"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"service"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"user"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"pass"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ul",[a("li",[a("code",[t._v("from")]),t._v(" (string): The email address used to send emails.")]),t._v(" "),a("li",[a("code",[t._v("service")]),t._v(" (object): The SMTP service info:\n"),a("ul",[a("li",[a("code",[t._v("name")]),t._v(" (string): Name of the service used to send emails (eg. "),a("code",[t._v("Gmail")]),t._v(").")]),t._v(" "),a("li",[a("code",[t._v("user")]),t._v(" (string): Username of the service used (eg. "),a("code",[t._v("john@gmail.com")]),t._v(").")]),t._v(" "),a("li",[a("code",[t._v("pass")]),t._v(" (string): Password of the username used (eg. "),a("code",[t._v("12356")]),t._v(").")])])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"email-service"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#email-service","aria-hidden":"true"}},[this._v("#")]),this._v(" Email service")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("api"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("email"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("services"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("email"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("send")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("from")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'contact@company.com'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Sender (defaults to `strapi.config.smtp.from`).")]),t._v("\n to"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v("'john@doe.com'")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Recipients list.")]),t._v("\n html"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'

Hello John

'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// HTML version of the email content.")]),t._v("\n text"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'Hello John'")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Text version of the email content.")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("then")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("catch")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("api"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("email"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("services"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("email"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("send")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("from")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'contact@company.com'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Sender (defaults to `strapi.config.smtp.from`).")]),t._v("\n to"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v("'john@doe.com'")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Recipients list.")]),t._v("\n html"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'

Hello John

'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// HTML version of the email content.")]),t._v("\n text"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'Hello John'")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Text version of the email content.")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" data"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("else")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"email-api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#email-api","aria-hidden":"true"}},[this._v("#")]),this._v(" Email API")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[this._v("POST /email\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("from")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'contact@company.com'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Optional : sender (defaults to `strapi.config.smtp.from`).")]),t._v("\n to"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v("'john@doe.com'")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Recipients list.")]),t._v("\n html"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'

Hello John

'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// HTML version of the email content.")]),t._v("\n text"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'Hello John'")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Text version of the email content.")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"sent"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"from"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"contact@company.com"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"to"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"john@doe.com"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"html"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"

Hello John

"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"text"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Hello John"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"template"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"default"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"lang"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"en"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"createdAt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"2015-10-21T09:10:36.486Z"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"updatedAt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"2015-10-21T09:10:36.871Z"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"id"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("2")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"email-model"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#email-model","aria-hidden":"true"}},[this._v("#")]),this._v(" Email model")])}],!1,null,null,null);e.options.__file="email.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/12.124227d1.js b/docs/.vuepress/dist/assets/js/12.124227d1.js new file mode 100644 index 0000000000..b2d49d4fbe --- /dev/null +++ b/docs/.vuepress/dist/assets/js/12.124227d1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{227:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"graphql"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#graphql","aria-hidden":"true"}},[t._v("#")]),t._v(" GraphQL")]),t._v(" "),a("p",[t._v("GraphQL is a data querying language that allows you to execute complex nested\nrequests between your clients and server applications.")]),t._v(" "),a("h2",{attrs:{id:"configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuration","aria-hidden":"true"}},[t._v("#")]),t._v(" Configuration")]),t._v(" "),a("p",[t._v("By default, GraphQL is enabled and the HTTP endpoint is "),a("code",[t._v("/graphql")]),t._v(".\nYou can override this settings in the "),a("code",[t._v("./config/general.json")]),t._v(" file.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"graphql"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"route"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"/graphql"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Options:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("enabled")]),t._v(" (boolean): Enabled or disabled GraphQL.")]),t._v(" "),a("li",[a("code",[t._v("route")]),t._v(" (string): Change GraphQL endpoint.")])]),t._v(" "),a("p",[t._v("Note: If GraphQL is disabled, the GraphQL global variable is not exposed.")]),t._v(" "),a("h2",{attrs:{id:"execute-simple-query"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#execute-simple-query","aria-hidden":"true"}},[t._v("#")]),t._v(" Execute simple query")]),t._v(" "),a("h3",{attrs:{id:"programmatically"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#programmatically","aria-hidden":"true"}},[t._v("#")]),t._v(" Programmatically")]),t._v(" "),a("p",[t._v("Strapi takes over GraphQL natively. We added a function called "),a("code",[t._v("query")]),t._v(" to execute\nyour query without given as a parameters the GraphQL schemas each time.")]),t._v(" "),a("p",[t._v("An example of how to use "),a("code",[t._v("query")]),t._v(" function:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// Build your query")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" query "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'{ users{firstName lastName posts{title}} }'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{attrs:{class:"token comment"}},[t._v("// Execute the query")]),t._v("\ngraphql"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("query")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("query"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("then")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("result"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("result"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("catch")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("And the JSON result:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"users"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"firstname"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"John"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"lastname"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Doe"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"posts"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"title"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"First title..."')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"title"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Second title..."')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"title"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Third title..."')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" \n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"firstname"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Karl"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"lastname"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Doe"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"posts"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"title"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Fourth title..."')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" \n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"with-a-http-request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#with-a-http-request","aria-hidden":"true"}},[t._v("#")]),t._v(" With a HTTP request")]),t._v(" "),a("p",[t._v("Strapi also provides a HTTP GraphQL server to execute request from your front-end application.")]),t._v(" "),a("p",[t._v("An example of how to execute the same request as above with a HTTP request with jQuery.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("$"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("get")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'http://yourserver.com/graphql?query={ users{firstName lastName posts{title}} }'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"execute-complex-queries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#execute-complex-queries","aria-hidden":"true"}},[t._v("#")]),t._v(" Execute complex queries")]),t._v(" "),a("h3",{attrs:{id:"query-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#query-parameters","aria-hidden":"true"}},[t._v("#")]),t._v(" Query parameters")]),t._v(" "),a("p",[t._v("If you're using Waterline ORM installed by default with Strapi, you have access to\nsome Waterline query parameters in your GraphQL query such as "),a("code",[t._v("sort")]),t._v(", "),a("code",[t._v("limit")]),t._v(" or "),a("code",[t._v("skip")]),t._v(".\nStrapi also provides the "),a("code",[t._v("start")]),t._v(" and "),a("code",[t._v("end")]),t._v(" parameters to select records between two dates.")]),t._v(" "),a("p",[t._v("This example will return 10 users' records sorted alphabetically by "),a("code",[t._v("firstName")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" query "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'{ users(limit: 10, sort: \"firstName ASC\"){firstName lastName post{title}} }'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("You can access to the 10 next users by adding the "),a("code",[t._v("skip")]),t._v(" parameter:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" query "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'{ users(limit: 10, sort: \"firstName ASC\", skip: 10){firstName lastName posts{title}} }'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("And you also can select those records in a period between two dates with the "),a("code",[t._v("start")]),t._v(" and "),a("code",[t._v("end")]),t._v(" parameters:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" query "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('\'{ users(limit: 10, sort: "firstName ASC", skip: 10, start: "09/21/2015", end:" 09/22/2015"){firstName lastName posts{title}} }\'')]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"useful-functions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#useful-functions","aria-hidden":"true"}},[t._v("#")]),t._v(" Useful functions")]),t._v(" "),a("p",[t._v("Strapi comes with a powerful set of useful functions such as "),a("code",[t._v("getLatest")]),t._v(", "),a("code",[t._v("getFirst")]),t._v(" and "),a("code",[t._v("count")]),t._v(".")]),t._v(" "),a("p",[t._v("Returns the 5 latest users from the September 27th 2015 at 8:59:59 PM:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" query "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'{ getLatestUsers(count: 5, start: \"9/27/2015 20:59:59\"){firstName lastName posts{title}} }'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Returns the 5 first users:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" query "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'{ getFirstUsers(count: 5){firstName lastName posts{title}} }'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Returns the number of subscribers the September 28th 2015:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" query "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('\'{ countUsers(start: "9/28/2015", end: "9/28/2015") }\'')]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}],!1,null,null,null);e.options.__file="graphql.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/13.d8092700.js b/docs/.vuepress/dist/assets/js/13.d8092700.js new file mode 100644 index 0000000000..cb79396dc9 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/13.d8092700.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{226:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"internationalization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#internationalization","aria-hidden":"true"}},[t._v("#")]),t._v(" Internationalization")]),t._v(" "),a("p",[t._v("Strapi provides built-in support for detecting user language preferences and translating\nstatic words/sentences.")]),t._v(" "),a("h2",{attrs:{id:"i18n-settings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#i18n-settings","aria-hidden":"true"}},[t._v("#")]),t._v(" i18n settings")]),t._v(" "),a("p",[t._v("Settings for localization/internationalization may be configured in "),a("code",[t._v("strapi.config.i18n")]),t._v(".\nThe most common reason you'll need to modify these settings is to edit the list of your\napplication's supported locales and/or the location of your translation stringfiles.")]),t._v(" "),a("h2",{attrs:{id:"locales"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#locales","aria-hidden":"true"}},[t._v("#")]),t._v(" Locales")]),t._v(" "),a("p",[t._v("Strapi reads JSON-formatted translation files from your project's "),a("code",[t._v("./config/locales")]),t._v("\ndirectory. Each file corresponds with a locale (usually a language) that your backend will support.\nThese files contain locale-specific strings (as JSON key-value pairs) that you can use in your\nviews, controllers, etc.")]),t._v(" "),a("p",[t._v("When your server is in "),a("code",[t._v("production")]),t._v(" mode it will read these files only once and then cache\nthe result. It will not write any updated strings when in "),a("code",[t._v("production")]),t._v(" mode.")]),t._v(" "),a("p",[t._v("Otherwise, the files will be read on every instantiation of the "),a("code",[t._v("i18n")]),t._v(" object.\nAdditionally newly-detected strings will be automatically added, and written out,\nto the locale JSON files.")]),t._v(" "),a("p",[t._v("These files contain locale-specific strings (as JSON key-value pairs) that you can use in your views,\ncontrollers, etc. Here is an example locale file ("),a("code",[t._v("./config/locales/fr.json")]),t._v("):")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"Hello!"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Bonjour!"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"Hello %s, how are you today?"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Bonjour %s, comment allez-vous aujourd\'hui ?"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Note that the keys in your stringfiles are case sensitive and require exact matches.\nThere are a few different schools of thought on the best approach here, and it really depends on\nwho/how often you'll be editing the stringfiles in the future. Especially if you'll be\nediting the translations by hand, simpler, all-lowercase key names may be preferable for maintainability.")]),t._v(" "),a("p",[t._v("For example, here's another pass at "),a("code",[t._v("./config/locales/fr.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"hello"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Bonjour!"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"hello-how-are-you-today"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Bonjour %s, comment allez-vous aujourd\'hui ?"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("And here's "),a("code",[t._v("./config/locales/en.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"hello"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Hello!"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"hello-how-are-you-today"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Hello %s, how are you today?"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("You can also nest locale strings. But a better approach would be to use "),a("code",[t._v(".")]),t._v(" to represent nested strings.\nFor example, here's the list of labels for the index page of a user controller:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"user.index.label.id"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"User ID"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"user.index.label.name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"User Name"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"translate-responses"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#translate-responses","aria-hidden":"true"}},[t._v("#")]),t._v(" Translate responses")]),t._v(" "),a("p",[t._v("Locales are accessible from everywhere in your application.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i18n"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("__")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'hello-how-are-you-today'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'John'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "Hello John, how are you today?"')]),t._v("\n")])])]),a("p",[t._v("Different plural forms are supported as a response to "),a("code",[t._v("count")]),t._v(" with "),a("code",[t._v("this.i18n.__n(one, other, count)")]),t._v(".")]),t._v(" "),a("p",[t._v("Use "),a("code",[t._v("this.i18n.__n()")]),t._v(" as you would use "),a("code",[t._v("this.i18.__()")]),t._v(" directly:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i18n"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("__n")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'%s cat'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'%s cats'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("1")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "1 cat"')]),t._v("\n\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i18n"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("__n")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'%s cat'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'%s cats'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("3")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "3 cats"')]),t._v("\n")])])]),a("p",[t._v("Or from locales:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"catEat"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"one"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"%d cat eats the %s"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"other"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'%d cats eat the %s'")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i18n"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("__n")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'catEat'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("10")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'mouse'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "10 cats eat the mouse"')]),t._v("\n")])])])])}],!1,null,null,null);e.options.__file="internationalization.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/14.7cfd4cb8.js b/docs/.vuepress/dist/assets/js/14.7cfd4cb8.js new file mode 100644 index 0000000000..cddcca36b9 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/14.7cfd4cb8.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{225:function(t,e,a){"use strict";a.r(e);var s=a(0),n=Object(s.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),a("hr"),t._v(" "),t._m(1),t._v(" "),a("hr"),t._v(" "),a("p",[t._v("Strapi is an open-source Node.js rich framework for building applications and services.")]),t._v(" "),a("p",[t._v("Strapi enables developers to focus on writing reusable application logic instead of spending time\nbuilding infrastructure. It is designed for building practical, production-ready Node.js applications\nin a matter of hours instead of weeks.")]),t._v(" "),a("p",[t._v("The framework sits on top of "),a("a",{attrs:{href:"http://koajs.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Koa"),a("OutboundLink")],1),t._v(". Its ensemble of small modules work\ntogether to provide simplicity, maintainability, and structural conventions to Node.js applications.")]),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),a("p",[t._v("Install the latest stable release with the npm command-line tool:")]),t._v(" "),t._m(4),t._m(5),t._v(" "),a("p",[t._v("You now are able to use the Strapi CLI. Simply create your first application and start the server:")]),t._v(" "),t._m(6),a("p",[t._v("The default home page is accessible at "),a("a",{attrs:{href:"http://localhost:1337/",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://localhost:1337/"),a("OutboundLink")],1),t._v(".")]),t._v(" "),t._m(7),t._v(" "),t._m(8),t._m(9),t._v(" "),t._m(10),t._m(11),t._v(" "),t._m(12),t._v(" "),t._m(13),t._v(" "),t._m(14),a("p",[t._v("This will generate a Strapi application without:")]),t._v(" "),t._m(15),t._v(" "),a("p",[t._v("This feature allows you to only use Strapi for your HTTP server structure if you want to.")]),t._v(" "),t._m(16),t._v(" "),a("p",[t._v("The Strapi Studio allows you to easily build and manage your application environment\nthanks to a powerful User Interface.")]),t._v(" "),a("p",[t._v("Log into the Strapi Studio with your user account ("),a("a",{attrs:{href:"http://studio.strapi.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://studio.strapi.io"),a("OutboundLink")],1),t._v(")\nand follow the instructions to start the experience.")]),t._v(" "),t._m(17),t._v(" "),a("blockquote",[a("p",[t._v("We advise you to use our Studio to build APIs. To do so, you need to create a Strapi account.\n"),a("a",{attrs:{href:"http://studio.strapi.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Go to the Strapi Studio to signup"),a("OutboundLink")],1),t._v(".\nStudio is dedicated to developers to build applications without writing\nany single line of code thanks to its powerful set of tools.")])]),t._v(" "),a("p",[t._v("After creating an account on the Strapi Studio, you are able to link your machine to your\nStrapi Studio account to get access to all features offered by the Strapi ecosystem.\nUse your Strapi account credentials.")]),t._v(" "),t._m(18),t._m(19),t._v(" "),t._m(20),t._v(" "),a("p",[t._v("Building on top of Strapi means your application is written entirely in JavaScript,\nthe language you and your team are already using in the browser.")]),t._v(" "),a("p",[t._v("Since you spend less time context-shifting, you're able to write code in a more consistent style,\nwhich makes development more productive.")]),t._v(" "),a("p",[t._v("The entire Strapi framework is written in ES2015.")]),t._v(" "),t._m(21),t._v(" "),a("p",[t._v("Strapi provides a robust layer for fundamental web applications to help you write your business\nlogic, without obscuring Node.js features that you know and love. Our goal is to make writing\nbusiness logic much easier than other frameworks.")]),t._v(" "),t._m(22),t._v(" "),a("p",[t._v("Strapi comes with a generator that help jumpstart your application's backend without writing any code. Just run:")]),t._v(" "),t._m(23),a("p",[t._v("and you'll get an API that lets you read, paginate, sort, filter, create, destroy, update,\nand associate cars.")]),t._v(" "),t._m(24),t._v(" "),a("p",[t._v("We take security very seriously. This is why Strapi comes with several security layers that just work\ndepending on your needs. Strapi provides configuration for CORS, CSRF, CSP, X-Frame-Options, XSS, HSTS,\nHTTPS, SSL, proxy, IP filtering and ships reusable security policies.")]),t._v(" "),a("p",[t._v("No matter what you need to secure, Strapi is the right tool to make it right.")]),t._v(" "),t._m(25),t._v(" "),a("p",[t._v("Strapi comes installed with a powerful ORM/ODM called Waterline, a datastore-agnostic tool that\ndramatically simplifies interaction with one or more databases.")]),t._v(" "),a("p",[t._v("It provides an abstraction layer on top of the underlying database, allowing you to easily query\nand manipulate your data without writing vendor-specific integration code.")]),t._v(" "),a("p",[t._v("Strapi offers a new take on the familiar relational model, aimed at making data modeling more practical.\nYou can do all the same things you might be used to (one-to-many, many-to-many), but you can also assign\nmultiple named associations per-model. Better yet, you can assign different models to different databases,\nand your associations/joins will still work, even across NoSQL and relational boundries.")]),t._v(" "),a("p",[t._v("Strapi has no problem implicitly/automatically joining a SQL table with a NoSQL collection and vice versa.")]),t._v(" "),t._m(26),t._v(" "),a("p",[t._v("Strapi is compatible with any front-end strategy; whether it's Angular, Backbone, Ember,\niOS, Android, Windows Phone, or something else that hasn't been invented yet.")]),t._v(" "),a("p",[t._v("Plus it's easy to serve up the same API to be consumed by another web service or community of developers.")]),t._v(" "),t._m(27),t._v(" "),a("p",[t._v("Convention over configuration is a consistent approach makes developing applications more\npredictable and efficient for everybody involved.")]),t._v(" "),a("p",[t._v("If anyone on your team has worked with frameworks, Strapi will feel pretty familiar.\nNot only that, but they can look at a Strapi project and know, generally, how to code up the basic\npatterns they've implemented over and over again in the past; whether their background.\nWhat about your second application, or your third? Each time you create a new Strapi application,\nyou start with a sane, familiar boilerplate that makes you more productive.")]),t._v(" "),a("p",[t._v("Configuration files give you extra opportunities for human error.")]),t._v(" "),a("p",[t._v("In many cases, you'll even be able to recycle some of your code.")]),t._v(" "),t._m(28),t._v(" "),t._m(29),t._v(" "),t._m(30),t._m(31),t._v(" "),t._m(32),a("p",[t._v('When an error occurs and it is still possible to respond to the client,\naka no data has been written to the socket, Strapi will respond appropriately with\na 500 "Internal Server Error". In either case an app-level "error" is emitted for logging purposes.')]),t._v(" "),t._m(33),t._v(" "),a("p",[t._v("Strapi has built in support for the idea of having a different set of settings for each environment.\nReal applications have this too, but often the framework around them doesn't accommodate it and\nyou end up having to swap configuration files in and out to achieve the same effect.")]),t._v(" "),t._m(34),t._v(" "),a("p",[t._v("Strapi is flexible enough to allow you to explore and create when you have the time to but also\nprovides automation tools when you don't.")])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction","aria-hidden":"true"}},[this._v("#")]),this._v(" Introduction")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Important Note: "),e("strong",[this._v("Strapi 1.x is on maintenance only")]),this._v(". Development focuses on the upcoming Strapi 3.0.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"getting-started"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started","aria-hidden":"true"}},[this._v("#")]),this._v(" Getting Started")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"installation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installation","aria-hidden":"true"}},[this._v("#")]),this._v(" Installation")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ "),e("span",{attrs:{class:"token function"}},[this._v("npm")]),this._v(" "),e("span",{attrs:{class:"token function"}},[this._v("install")]),this._v(" strapi -g\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"create-your-first-project"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-your-first-project","aria-hidden":"true"}},[this._v("#")]),this._v(" Create your first project")])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("$ strapi new "),a("span",{attrs:{class:"token operator"}},[t._v("<")]),t._v("appName"),a("span",{attrs:{class:"token operator"}},[t._v(">")]),t._v("\n$ "),a("span",{attrs:{class:"token function"}},[t._v("cd")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("<")]),t._v("appName"),a("span",{attrs:{class:"token operator"}},[t._v(">")]),t._v("\n$ strapi start\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"create-your-first-api"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-your-first-api","aria-hidden":"true"}},[this._v("#")]),this._v(" Create your first API")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi generate api "),e("span",{attrs:{class:"token operator"}},[this._v("<")]),this._v("apiName"),e("span",{attrs:{class:"token operator"}},[this._v(">")]),this._v("\n")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("p",[t._v("For example, you can create a "),a("code",[t._v("car")]),t._v(" API with a name ("),a("code",[t._v("name")]),t._v("), year ("),a("code",[t._v("year")]),t._v(") and\nthe license plate ("),a("code",[t._v("license")]),t._v(") with:")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi generate api car name:string year:integer license:string\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"alternatives"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#alternatives","aria-hidden":"true"}},[this._v("#")]),this._v(" Alternatives")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"dry-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dry-application","aria-hidden":"true"}},[this._v("#")]),this._v(" Dry Application")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Note that you can generate a dry application using the "),e("code",[this._v("dry")]),this._v(" option:")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi new "),e("span",{attrs:{class:"token operator"}},[this._v("<")]),this._v("appName"),e("span",{attrs:{class:"token operator"}},[this._v(">")]),this._v(" --dry\n")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ul",[a("li",[t._v("the built-in "),a("code",[t._v("user")]),t._v(", "),a("code",[t._v("email")]),t._v(" and "),a("code",[t._v("upload")]),t._v(" APIs,")]),t._v(" "),a("li",[t._v("the "),a("code",[t._v("grant")]),t._v(" hook,")]),t._v(" "),a("li",[t._v("the open-source admin panel,")]),t._v(" "),a("li",[t._v("the Waterline ORM ("),a("code",[t._v("waterline")]),t._v(" and "),a("code",[t._v("blueprints")]),t._v(" hooks disabled),")]),t._v(" "),a("li",[t._v("the Strapi Studio connection ("),a("code",[t._v("studio")]),t._v(" hook disabled).")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"create-an-api-via-the-strapi-studio"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-an-api-via-the-strapi-studio","aria-hidden":"true"}},[this._v("#")]),this._v(" Create an API via the Strapi Studio")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"link-to-the-strapi-studio"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#link-to-the-strapi-studio","aria-hidden":"true"}},[this._v("#")]),this._v(" Link to the Strapi Studio")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi login\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"key-features"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#key-features","aria-hidden":"true"}},[this._v("#")]),this._v(" Key-features")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"_100-javascript"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_100-javascript","aria-hidden":"true"}},[this._v("#")]),this._v(" 100% JavaScript")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"getting-started-quickly"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-quickly","aria-hidden":"true"}},[this._v("#")]),this._v(" Getting started quickly")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"auto-generate-rest-apis"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#auto-generate-rest-apis","aria-hidden":"true"}},[this._v("#")]),this._v(" Auto-generate REST APIs")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi generate api car\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"security"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#security","aria-hidden":"true"}},[this._v("#")]),this._v(" Security")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"datastore-agnostic"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#datastore-agnostic","aria-hidden":"true"}},[this._v("#")]),this._v(" Datastore-agnostic")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"front-end-agnostic"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#front-end-agnostic","aria-hidden":"true"}},[this._v("#")]),this._v(" Front-end agnostic")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"convention-over-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#convention-over-configuration","aria-hidden":"true"}},[this._v("#")]),this._v(" Convention over configuration")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"error-handling"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#error-handling","aria-hidden":"true"}},[this._v("#")]),this._v(" Error Handling")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("By default outputs all errors to "),e("code",[this._v("stderr")]),this._v(" unless "),e("code",[this._v("NODE_ENV")]),this._v(" is "),e("code",[this._v("test")]),this._v('.\nTo perform custom error-handling logic such as centralized logging you can add an "error" event listener:')])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("app"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("on")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'error'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("error")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'server error'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("If an error in the req/res cycle and it is not possible to respond to the client,\nthe "),e("code",[this._v("Context")]),this._v(" instance is also passed:")])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("app"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("on")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'error'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ctx"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("error")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'server error'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" err"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ctx"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"different-environments"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#different-environments","aria-hidden":"true"}},[this._v("#")]),this._v(" Different environments")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"loose-coupling"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#loose-coupling","aria-hidden":"true"}},[this._v("#")]),this._v(" Loose coupling")])}],!1,null,null,null);n.options.__file="introduction.md";e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/15.55a20f7c.js b/docs/.vuepress/dist/assets/js/15.55a20f7c.js new file mode 100644 index 0000000000..c773c8c8d1 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/15.55a20f7c.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{224:function(t,s,a){"use strict";a.r(s);var n=a(0),o=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"logging"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logging","aria-hidden":"true"}},[t._v("#")]),t._v(" Logging")]),t._v(" "),a("p",[t._v("Strapi comes with a simple and useful built-in logger.\nIts usage is purposely very similar to "),a("code",[t._v("console.log()")]),t._v(", but with a handful of\nextra features; namely support for multiple log levels with colorized,\nprefixed console output.")]),t._v(" "),a("p",[t._v("The logger is accessible through the "),a("code",[t._v("strapi")]),t._v(" object directly with "),a("code",[t._v("strapi.log")]),t._v(".")]),t._v(" "),a("p",[t._v("You can work with this logger in the same way that you work with the default logger:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'Logs work!'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"logging-with-metadata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logging-with-metadata","aria-hidden":"true"}},[t._v("#")]),t._v(" Logging with Metadata")]),t._v(" "),a("p",[t._v("In addition to logging string messages, the logger will also optionally log additional\nJSON metadata objects. Adding metadata is simple:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'Test log message'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n anything"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'This is metadata'")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"string-interpolation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#string-interpolation","aria-hidden":"true"}},[t._v("#")]),t._v(" String interpolation")]),t._v(" "),a("p",[t._v("The log method provides the same string interpolation methods like "),a("code",[t._v("util.format")]),t._v(".")]),t._v(" "),a("p",[t._v("This allows for the following log messages.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'test message %s'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'my string'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => info: test message my string")]),t._v("\n")])])]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'test message %d'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("123")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => info: test message 123")]),t._v("\n")])])]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'test message %j'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n number"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("123")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => info: test message {"number":123}')]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => meta = {}")]),t._v("\n")])])]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'test message %s, %s'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'first'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'second'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n number"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("123")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => info: test message first, second")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => meta = {number: 123}")]),t._v("\n")])])]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'test message'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'first'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'second'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n number"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("123")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => info: test message first second")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => meta = {number: 123}")]),t._v("\n")])])]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'test message %s, %s'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'first'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'second'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n number"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("123")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => info: test message first, second")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => meta = {number: 123}")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => callback = function() {}")]),t._v("\n")])])]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'test message'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'first'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'second'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n number"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("123")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => info: test message first second")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => meta = {number: 123}")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => callback = function() {}")]),t._v("\n")])])]),a("h2",{attrs:{id:"logging-levels"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logging-levels","aria-hidden":"true"}},[t._v("#")]),t._v(" Logging levels")]),t._v(" "),a("p",[t._v("Setting the level for your logging message can be accomplished by using\nthe level specified methods defined.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("debug")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'This is a debug log'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nstrapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("info")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'This is an info log'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nstrapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("warn")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'This is a warning log'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nstrapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("error")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'This is an error log '")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}],!1,null,null,null);o.options.__file="logging.md";s.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/16.5c84c402.js b/docs/.vuepress/dist/assets/js/16.5c84c402.js new file mode 100644 index 0000000000..a61e9acde6 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/16.5c84c402.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{223:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"models"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#models","aria-hidden":"true"}},[t._v("#")]),t._v(" Models")]),t._v(" "),a("p",[t._v("Strapi comes installed with a powerful Object-Relational-Mapper (ORM) called Waterline,\na datastore-agnostic tool that dramatically simplifies interaction with one or more databases.")]),t._v(" "),a("p",[t._v("Models represent a structure of data which requires persistent storage. The data may live in any data-store\nbut is interfaced in the same way. This allows your users to live in PostgreSQL and your user preferences\nto live in MongoDB and you will interact with the data models in the exact same way.")]),t._v(" "),a("p",[t._v("If you're using MySQL, a model might correspond to a table. If you're using MongoDB, it might correspond\nto a collection. In either case, the goal is to provide a simple, modular way of managing data without\nrelying on any one type of database.")]),t._v(" "),a("p",[t._v("Models are defined in the "),a("code",[t._v("./api//models")]),t._v(" directory.")]),t._v(" "),a("h2",{attrs:{id:"model-settings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#model-settings","aria-hidden":"true"}},[t._v("#")]),t._v(" Model settings")]),t._v(" "),a("p",[t._v("The following properties can be specified at the top level of your model definition to override\nthe defaults for that particular model.")]),t._v(" "),a("p",[t._v("For example, this a basic model "),a("code",[t._v("Pet")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"identity"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pet"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"connection"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"mongoDBServer"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"schema"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"gender"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enum"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v('"male"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"female"')]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"age"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"int"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"max"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("100")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"birthDate"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"date"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"breed"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoPK"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoCreatedAt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoUpdatedAt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])]),a("h3",{attrs:{id:"schema"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schema","aria-hidden":"true"}},[t._v("#")]),t._v(" schema")]),t._v(" "),a("p",[t._v("A flag to toggle schemaless or schema mode in databases that support schemaless data structures.\nIf turned off, this will allow you to store arbitrary data in a record. If turned on, only attributes\ndefined in the model's attributes object will be stored.")]),t._v(" "),a("p",[t._v("For adapters that don't require a schema, such as MongoDB or Redis, the "),a("code",[t._v("schema")]),t._v(" key is set to "),a("code",[t._v("false")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"schema"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token operator"}},[t._v("|")]),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"connection"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connection","aria-hidden":"true"}},[t._v("#")]),t._v(" connection")]),t._v(" "),a("p",[t._v("The configured database connection where this model will fetch and save its data.\nDefaults to "),a("code",[t._v("defaultSQLite")]),t._v(", the default connection that uses the "),a("code",[t._v("waterline-sqlite3")]),t._v(" adapter.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"connection"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"mongoDBServer"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"identity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identity","aria-hidden":"true"}},[t._v("#")]),t._v(" identity")]),t._v(" "),a("p",[t._v("The lowercase unique key for the model. By default, a model's identity is inferred automatically\nby lowercasing its filename. You should never change this property on your models.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"identity"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"petModel"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"globalid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#globalid","aria-hidden":"true"}},[t._v("#")]),t._v(" globalId")]),t._v(" "),a("p",[t._v("This flag changes the global name by which you can access your model (if the globalization of models\nis enabled). You should never change this property on your models.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"globaId"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pets"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("For example to access to your model function:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("Pets"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("find")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("exec")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" pets"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n console"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("log")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pets"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"autopk"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#autopk","aria-hidden":"true"}},[t._v("#")]),t._v(" autoPK")]),t._v(" "),a("p",[t._v("A flag to toggle the automatic definition of a primary key in your model.\nThe details of this default primary key vary between adapters. In any case, the primary keys generated\nby "),a("code",[t._v("autoPK")]),t._v(" will be unique. If turned off no primary key will be created by default, and you will need\nto define one manually using "),a("code",[t._v("primaryKey: true")]),t._v(" for one of the model attributes.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoPK"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token operator"}},[t._v("|")]),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"autocreatedat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#autocreatedat","aria-hidden":"true"}},[t._v("#")]),t._v(" autoCreatedAt")]),t._v(" "),a("p",[t._v("A flag to toggle the automatic definition of a "),a("code",[t._v("createdAt")]),t._v(" attribute in your model.\nBy default, "),a("code",[t._v("createdAt")]),t._v(" is an attribute which will be automatically set when a record is created with\nthe current timestamp.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoCreatedAt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token operator"}},[t._v("|")]),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"autoupdatedat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#autoupdatedat","aria-hidden":"true"}},[t._v("#")]),t._v(" autoUpdatedAt")]),t._v(" "),a("p",[t._v("A flag to toggle the automatic definition of a "),a("code",[t._v("updatedAt")]),t._v(" attribute in your model.\nBy default, "),a("code",[t._v("updatedAt")]),t._v(" is an attribute which will be automatically set with the current timestamp\nevery time a record is updated.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoUpdatedAt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token operator"}},[t._v("|")]),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"tablename"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tablename","aria-hidden":"true"}},[t._v("#")]),t._v(" tableName")]),t._v(" "),a("p",[t._v("You can define a custom name for the physical collection in your adapter by adding a "),a("code",[t._v("tableName")]),t._v("\nattribute. This isn't just for tables. In MySQL, PostgreSQL, Oracle, etc. this setting refers\nto the name of the table, but in MongoDB or Redis, it refers to the collection, and so forth.\nIf no "),a("code",[t._v("tableName")]),t._v(" is specified, Waterline will use the model's "),a("code",[t._v("identity")]),t._v(" as its "),a("code",[t._v("tableName")]),t._v(".")]),t._v(" "),a("p",[t._v("This is particularly useful for working with pre-existing/legacy databases.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"tableName"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pets_table"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"attributes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#attributes","aria-hidden":"true"}},[t._v("#")]),t._v(" attributes")]),t._v(" "),a("p",[t._v("Model attributes are basic pieces of information about a model.\nA model called "),a("code",[t._v("Pet")]),t._v(" might have attributes called "),a("code",[t._v("name")]),t._v(", "),a("code",[t._v("gender")]),t._v(", "),a("code",[t._v("age")]),t._v(",\n"),a("code",[t._v("birthday")]),t._v(" and "),a("code",[t._v("breed")]),t._v(".")]),t._v(" "),a("p",[t._v("Options can be used to enforce various constraints and add special enhancements to model attributes.")]),t._v(" "),a("h4",{attrs:{id:"type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type","aria-hidden":"true"}},[t._v("#")]),t._v(" type")]),t._v(" "),a("p",[t._v("Specifies the type of data that will be stored in this attribute. One of:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("string")])]),t._v(" "),a("li",[a("code",[t._v("text")])]),t._v(" "),a("li",[a("code",[t._v("integer")])]),t._v(" "),a("li",[a("code",[t._v("float")])]),t._v(" "),a("li",[a("code",[t._v("date")])]),t._v(" "),a("li",[a("code",[t._v("datetime")])]),t._v(" "),a("li",[a("code",[t._v("boolean")])]),t._v(" "),a("li",[a("code",[t._v("binary")])]),t._v(" "),a("li",[a("code",[t._v("array")])]),t._v(" "),a("li",[a("code",[t._v("json")])])]),t._v(" "),a("p",[t._v("Defaults to "),a("code",[t._v("string")]),t._v(" if not specified.")]),t._v(" "),a("h3",{attrs:{id:"validations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#validations","aria-hidden":"true"}},[t._v("#")]),t._v(" Validations")]),t._v(" "),a("p",[t._v("Strapi bundles support for automatic validations of your models' attributes.\nAny time a record is updated, or a new record is created, the data for each attribute will\nbe checked against all of your predefined validation rules. This provides a convenient failsafe\nto ensure that invalid entries don't make their way into your application's database(s).")]),t._v(" "),a("p",[t._v("Validations are defined directly in your collection attributes.")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("after")]),t._v(" (date): Checks if string date in this record is after the specified "),a("code",[t._v("Date")]),t._v(".\nMust be valid JavaScript "),a("code",[t._v("Date")]),t._v(".")]),t._v(" "),a("li",[a("code",[t._v("alpha")]),t._v(" (boolean): Checks if string in this record contains only letters (a-zA-Z).")]),t._v(" "),a("li",[a("code",[t._v("alphadashed")]),t._v(" (boolean): Checks if string in this record contains only numbers and/or dashes.")]),t._v(" "),a("li",[a("code",[t._v("alphanumeric")]),t._v(" (boolean): Checks if string in this record contains only letters and numbers.")]),t._v(" "),a("li",[a("code",[t._v("alphanumericdashed")]),t._v(" (boolean): Checks if string in this record contains only numbers and/or\nletters and/or dashes.")]),t._v(" "),a("li",[a("code",[t._v("array")]),t._v(" (boolean): Checks if this record is a valid JavaScript array object.\nStrings formatted as arrays will fail.")]),t._v(" "),a("li",[a("code",[t._v("before")]),t._v(" (date): Checks if string in this record is a date that's before the specified date.")]),t._v(" "),a("li",[a("code",[t._v("binary")]),t._v(" (boolean): Checks if this record is a valid binary data. Strings will pass.")]),t._v(" "),a("li",[a("code",[t._v("boolean")]),t._v(" (boolean): Checks if this record is a valid boolean. Strings will fail.")]),t._v(" "),a("li",[a("code",[t._v("contains")]),t._v(" (string): Checks if string in this record contains the seed.")]),t._v(" "),a("li",[a("code",[t._v("creditcard")]),t._v(" (boolean): Checks if string in this record is a credit card.")]),t._v(" "),a("li",[a("code",[t._v("date")]),t._v(" (boolean): Checks if string in this record is a date takes both strings and JavaScript.")]),t._v(" "),a("li",[a("code",[t._v("datetime")]),t._v(" (boolean): Checks if string in this record looks like a JavaScript "),a("code",[t._v("datetime")]),t._v(".")]),t._v(" "),a("li",[a("code",[t._v("decimal")]),t._v(" (boolean): Checks if it contains a decimal or is less than 1.")]),t._v(" "),a("li",[a("code",[t._v("email")]),t._v(" (boolean): Checks if string in this record looks like an email address.")]),t._v(" "),a("li",[a("code",[t._v("empty")]),t._v(" (boolean): Checks if the entry is empty. Arrays, strings, or arguments objects with\na length of 0 and objects with no\nown enumerable properties are considered empty.")]),t._v(" "),a("li",[a("code",[t._v("equals")]),t._v(" (integer): Checks if string in this record is equal to the specified value.\nThey must match in both value and type.")]),t._v(" "),a("li",[a("code",[t._v("falsey")]),t._v(" (boolean): Would a Javascript engine register a value of "),a("code",[t._v("false")]),t._v(" on this?.")]),t._v(" "),a("li",[a("code",[t._v("finite")]),t._v(" (boolean): Checks if given value is, or can be coerced to, a finite number.\nThis is not the same as native "),a("code",[t._v("isFinite")]),t._v("\nwhich will return "),a("code",[t._v("true")]),t._v(" for booleans and empty strings.")]),t._v(" "),a("li",[a("code",[t._v("float")]),t._v(" (boolean): Checks if string in this record is of the number type float.")]),t._v(" "),a("li",[a("code",[t._v("hexadecimal")]),t._v(" (boolean): Checks if string in this record is a hexadecimal number.")]),t._v(" "),a("li",[a("code",[t._v("hexColor")]),t._v(" (boolean): Checks if string in this record is a hexadecimal color.")]),t._v(" "),a("li",[a("code",[t._v("in")]),t._v(" (array): Checks if string in this record is in the specified array of allowed\nstring values.")]),t._v(" "),a("li",[a("code",[t._v("int")]),t._v(" (boolean): Check if string in this record is an integer.")]),t._v(" "),a("li",[a("code",[t._v("integer")]),t._v(" (boolean): Check if string in this record is an integer. Alias for "),a("code",[t._v("int")]),t._v(".")]),t._v(" "),a("li",[a("code",[t._v("ip")]),t._v(" (boolean): Checks if string in this record is a valid IP (v4 or v6).")]),t._v(" "),a("li",[a("code",[t._v("ipv4")]),t._v(" (boolean): Checks if string in this record is a valid IP v4.")]),t._v(" "),a("li",[a("code",[t._v("ipv6")]),t._v(" (boolean): Checks if string in this record is aa valid IP v6.")]),t._v(" "),a("li",[a("code",[t._v("json")]),t._v(" (boolean): Checks if the record is a JSON.")]),t._v(" "),a("li",[a("code",[t._v("lowercase")]),t._v(" (boolean): Check if string in this record is in all lowercase.")]),t._v(" "),a("li",[a("code",[t._v("max")]),t._v(" (integer): max value for an integer.")]),t._v(" "),a("li",[a("code",[t._v("maxLength")]),t._v(" (integer):")]),t._v(" "),a("li",[a("code",[t._v("min")]),t._v(" (integer): min value for an integer.")]),t._v(" "),a("li",[a("code",[t._v("minLength")]),t._v(" (integer):")]),t._v(" "),a("li",[a("code",[t._v("notContains")]),t._v(" (string): Checks if string in this record doesn't contain the seed.")]),t._v(" "),a("li",[a("code",[t._v("notIn")]),t._v(" (array): does the value of this model attribute exist inside of the defined\nvalidator value (of the same type).\nTakes strings and arrays.")]),t._v(" "),a("li",[a("code",[t._v("notNull")]),t._v(" (boolean): does this not have a value of "),a("code",[t._v("null")]),t._v(" ?.")]),t._v(" "),a("li",[a("code",[t._v("null")]),t._v(" (boolean): Checks if string in this record is null.")]),t._v(" "),a("li",[a("code",[t._v("number")]),t._v(" (boolean): Checks if this record is a number. "),a("code",[t._v("NaN")]),t._v(" is considered a number.")]),t._v(" "),a("li",[a("code",[t._v("numeric")]),t._v(" (boolean): Checks if string in this record contains only numbers.")]),t._v(" "),a("li",[a("code",[t._v("object")]),t._v(" (boolean): Checks if this attribute is the language type of Object.\nPasses for arrays, functions, objects,\nregexes, new Number(0), and new String('') !")]),t._v(" "),a("li",[a("code",[t._v("regex")]),t._v(" (regex): Checks if the record matches the specific regex.")]),t._v(" "),a("li",[a("code",[t._v("required")]),t._v(" (boolean): Must this model attribute contain valid data before a new\nrecord can be created?.")]),t._v(" "),a("li",[a("code",[t._v("string")]),t._v(" (boolean): Checks if the record is a string.")]),t._v(" "),a("li",[a("code",[t._v("text")]),t._v(" (boolean): Checks if the record is a text.")]),t._v(" "),a("li",[a("code",[t._v("truthy")]),t._v(" (boolean): Would a Javascript engine register a value of "),a("code",[t._v("false")]),t._v(" on this?")]),t._v(" "),a("li",[a("code",[t._v("undefined")]),t._v(" (boolean): Would a JavaScript engine register this thing as have the\nvalue "),a("code",[t._v("undefined")]),t._v("?")]),t._v(" "),a("li",[a("code",[t._v("uppercase")]),t._v(" (boolean): Checks if string in this record is uppercase.")]),t._v(" "),a("li",[a("code",[t._v("url")]),t._v(" (boolean): Checks if string in this record is a URL.")]),t._v(" "),a("li",[a("code",[t._v("urlish")]),t._v(" (boolean): Checks if string in this record contains something that looks like\na route, ending with a file extension.")]),t._v(" "),a("li",[a("code",[t._v("uuid")]),t._v(" (boolean): Checks if string in this record is a UUID (v3, v4, or v5).")]),t._v(" "),a("li",[a("code",[t._v("uuidv3")]),t._v(" (boolean): Checks if string in this record is a UUID (v3).")]),t._v(" "),a("li",[a("code",[t._v("uuidv4")]),t._v(" (boolean): Checks if string in this record is a UUID (v4).")])]),t._v(" "),a("h4",{attrs:{id:"defaultsto"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#defaultsto","aria-hidden":"true"}},[t._v("#")]),t._v(" defaultsTo")]),t._v(" "),a("p",[t._v("When a record is created, if no value was supplied, the record will be created with the specified\n"),a("code",[t._v("defaultsTo")]),t._v(" value.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"usersGroup"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"defaultsTo"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"guess"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"autoincrement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#autoincrement","aria-hidden":"true"}},[t._v("#")]),t._v(" autoIncrement")]),t._v(" "),a("p",[t._v("Sets up the attribute as an auto-increment key. When a new record is added to the model,\nif a value for this attribute is not specified, it will be generated by incrementing the most recent\nrecord's value by one.")]),t._v(" "),a("p",[t._v("Attributes which specify "),a("code",[t._v("autoIncrement")]),t._v(" should always be of "),a("code",[t._v("type: integer")]),t._v(".\nAlso, bear in mind that the level of support varies across different datastores.\nFor instance, MySQL will not allow more than one auto-incrementing column per table.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"placeInLine"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoIncrement"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"unique"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unique","aria-hidden":"true"}},[t._v("#")]),t._v(" unique")]),t._v(" "),a("p",[t._v("Ensures no two records will be allowed with the same value for the target attribute.\nThis is an adapter-level constraint, so in most cases this will result in a unique index on the\nattribute being created in the underlying datastore.")]),t._v(" "),a("p",[t._v("Defaults to "),a("code",[t._v("false")]),t._v(" if not specified.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"username"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"primarykey"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#primarykey","aria-hidden":"true"}},[t._v("#")]),t._v(" primaryKey")]),t._v(" "),a("p",[t._v("Use this attribute as the the primary key for the record. Only one attribute per model can be the\n"),a("code",[t._v("primaryKey")]),t._v(". Defaults to "),a("code",[t._v("false")]),t._v(" if not specified.")]),t._v(" "),a("p",[t._v("This should never be used unless "),a("code",[t._v("autoPK")]),t._v(" is set to "),a("code",[t._v("false")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"uuid"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"primaryKey"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"enum"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enum","aria-hidden":"true"}},[t._v("#")]),t._v(" enum")]),t._v(" "),a("p",[t._v("A special validation property which only saves data which matches a whitelisted set of values.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"gender"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enum"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v('"male"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"female"')]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#size","aria-hidden":"true"}},[t._v("#")]),t._v(" size")]),t._v(" "),a("p",[t._v("If supported in the adapter, can be used to define the size of the attribute.\nFor example in MySQL, "),a("code",[t._v("size")]),t._v(" can be specified as a number ("),a("code",[t._v("n")]),t._v(") to create a column with the SQL\ndata type: "),a("code",[t._v("varchar(n)")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"size"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("24")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"columnname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#columnname","aria-hidden":"true"}},[t._v("#")]),t._v(" columnName")]),t._v(" "),a("p",[t._v("Inside an attribute definition, you can specify a "),a("code",[t._v("columnName")]),t._v(" to force Waterline to store data\nfor that attribute in a specific column in the configured connection.\nBe aware that this is not necessarily SQL-specific. It will also work for MongoDB fields, etc.")]),t._v(" "),a("p",[t._v("While the "),a("code",[t._v("columnName")]),t._v(" property is primarily designed for working with existing/legacy databases,\nit can also be useful in situations where your database is being shared by other applications,\nor you don't have access permissions to change the schema.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"columnName"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pet_name"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"associations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#associations","aria-hidden":"true"}},[t._v("#")]),t._v(" Associations")]),t._v(" "),a("p",[t._v("With Waterline you can associate models with other models across all data stores.\nThis means that your users can live in PostgreSQL and their photos can live in MongoDB\nand you can interact with the data as if they lived together on the same database.\nYou can also have associations that live on separate connections or in different databases\nwithin the same adapter.")]),t._v(" "),a("h3",{attrs:{id:"one-way-associations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#one-way-associations","aria-hidden":"true"}},[t._v("#")]),t._v(" One-Way associations")]),t._v(" "),a("p",[t._v("A one-way association is where a model is associated with another model.\nYou could query that model and populate to get the associated model.\nYou can't however query the associated model and populate to get the associating model.")]),t._v(" "),a("p",[t._v("In this example, we are associating a "),a("code",[t._v("User")]),t._v(" with a "),a("code",[t._v("Pet")]),t._v(" but not a "),a("code",[t._v("Pet")]),t._v(" with a "),a("code",[t._v("User")]),t._v(".\nBecause we have only formed an association on one of the models, a "),a("code",[t._v("Pet")]),t._v(" has no restrictions\non the number of "),a("code",[t._v("User")]),t._v(" models it can belong to. If we wanted to, we could change this and\nassociate the "),a("code",[t._v("Pet")]),t._v(" with exactly one "),a("code",[t._v("User")]),t._v(" and the "),a("code",[t._v("User")]),t._v(" with exactly one "),a("code",[t._v("Pet")]),t._v(".")]),t._v(" "),a("p",[a("code",[t._v("./api/pet/models/Pet.settings.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"color"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("code",[t._v("./api/user/models/User.settings.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"color"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"pony"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"model"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pet"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"one-to-one-associations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#one-to-one-associations","aria-hidden":"true"}},[t._v("#")]),t._v(" One-to-One associations")]),t._v(" "),a("p",[t._v("A one-to-one association states that a model may only be associated with one other model.\nIn order for the model to know which other model it is associated with a foreign key must\nbe included in the record.")]),t._v(" "),a("p",[t._v("In this example, we are associating a "),a("code",[t._v("Pet")]),t._v(" with a "),a("code",[t._v("User")]),t._v(". The "),a("code",[t._v("User")]),t._v(" may only have one\n"),a("code",[t._v("Pet")]),t._v(" and viceversa, a "),a("code",[t._v("Pet")]),t._v(" can only have one "),a("code",[t._v("User")]),t._v(". However, in order to query this association\nfrom both sides, you will have to create/update both models.")]),t._v(" "),a("p",[a("code",[t._v("./api/pet/models/Pet.settings.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"color"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"owner"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"model"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"user"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("code",[t._v("./api/user/models/User.settings.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"age"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"pony"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"model"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pet"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"one-to-many-associations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#one-to-many-associations","aria-hidden":"true"}},[t._v("#")]),t._v(" One-to-Many associations")]),t._v(" "),a("p",[t._v("A one-to-many association states that a model can be associated with many other models.\nTo build this association a virtual attribute is added to a model using the "),a("code",[t._v("collection")]),t._v(" property.\nIn a one-to-many association one side must have a "),a("code",[t._v("collection")]),t._v(" attribute and the other side must contain a\n"),a("code",[t._v("model")]),t._v(" attribute. This allows the many side to know which records it needs to get when a "),a("code",[t._v("populate")]),t._v(" is used.")]),t._v(" "),a("p",[t._v("Because you may want a model to have multiple one-to-many associations on another model a "),a("code",[t._v("via")]),t._v(" key is\nneeded on the "),a("code",[t._v("collection")]),t._v(" attribute. This states which "),a("code",[t._v("model")]),t._v(" attribute on the one side of the association\nis used to populate the records.")]),t._v(" "),a("p",[t._v("In this example, a "),a("code",[t._v("User")]),t._v(" can have several "),a("code",[t._v("Pet")]),t._v(", but a "),a("code",[t._v("Pet")]),t._v(" has only one "),a("code",[t._v("owner")]),t._v(" (from the "),a("code",[t._v("User")]),t._v(" model).")]),t._v(" "),a("p",[a("code",[t._v("./api/pet/models/Pet.settings.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"color"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"owner"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"model"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"user"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("code",[t._v("./api/user/models/User.settings.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"age"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"pets"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"collection"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pet"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"via"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"owner"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"many-to-many-associations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#many-to-many-associations","aria-hidden":"true"}},[t._v("#")]),t._v(" Many-to-Many associations")]),t._v(" "),a("p",[t._v("A many-to-many association states that a model can be associated with many other models\nand vice-versa. Because both models can have many related models a new join table will\nneed to be created to keep track of these relations.")]),t._v(" "),a("p",[t._v("Waterline will look at your models and if it finds that two models both have "),a("code",[t._v("collection")]),t._v("\nattributes that point to each other, it will automatically build up a join table for you.")]),t._v(" "),a("p",[t._v("Because you may want a model to have multiple many-to-many associations on another model\na "),a("code",[t._v("via")]),t._v(" key is needed on the "),a("code",[t._v("collection")]),t._v(" attribute. This states which "),a("code",[t._v("model")]),t._v(" attribute on the\none side of the association is used to populate the records.")]),t._v(" "),a("p",[t._v("Using the "),a("code",[t._v("User")]),t._v(" and "),a("code",[t._v("Pet")]),t._v(" example lets look at how to build a schema where a "),a("code",[t._v("User")]),t._v(" may\nhave many "),a("code",[t._v("Pet")]),t._v(" records and a "),a("code",[t._v("Pet")]),t._v(" may have multiple owners.")]),t._v(" "),a("p",[t._v("In this example, we will start with an array of users and an array of pets.\nWe will create records for each element in each array then associate all of the "),a("code",[t._v("Pets")]),t._v(" with all\nof the "),a("code",[t._v("Users")]),t._v(". If everything worked properly, we should be able to query any "),a("code",[t._v("User")]),t._v(" and see that\nthey "),a("em",[t._v("own")]),t._v(" all of the "),a("code",[t._v("Pets")]),t._v(". Furthermore, we should be able to query any "),a("code",[t._v("Pet")]),t._v(" and see that\nit is "),a("em",[t._v("owned")]),t._v(" by every "),a("code",[t._v("User")]),t._v(".")]),t._v(" "),a("p",[a("code",[t._v("./api/pet/models/Pet.settings.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"color"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"owners"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"collection"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"user"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"via"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pets"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[a("code",[t._v("./api/user/models/User.settings.json")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"attributes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"name"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"string"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"unique"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"age"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"type"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"integer"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"required"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"pets"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"collection"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"pet"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"via"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"owners"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"lifecycle-callbacks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lifecycle-callbacks","aria-hidden":"true"}},[t._v("#")]),t._v(" Lifecycle Callbacks")]),t._v(" "),a("p",[t._v("Lifecycle callbacks are functions you can define to run at certain times in a query.\nThey are hooks that you can tap into in order to change data.")]),t._v(" "),a("p",[t._v("Strapi exposes a handful of lifecycle callbacks by default.")]),t._v(" "),a("h3",{attrs:{id:"callbacks-on-create"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#callbacks-on-create","aria-hidden":"true"}},[t._v("#")]),t._v(" Callbacks on create")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("beforeValidate")]),t._v(": "),a("code",[t._v("fn(values, cb)")])]),t._v(" "),a("li",[a("code",[t._v("afterValidate")]),t._v(": "),a("code",[t._v("fn(values, cb)")])]),t._v(" "),a("li",[a("code",[t._v("beforeCreate")]),t._v(": "),a("code",[t._v("fn(values, cb)")])]),t._v(" "),a("li",[a("code",[t._v("afterCreate")]),t._v(": "),a("code",[t._v("fn(newlyInsertedRecord, cb)")])])]),t._v(" "),a("h3",{attrs:{id:"callbacks-on-update"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#callbacks-on-update","aria-hidden":"true"}},[t._v("#")]),t._v(" Callbacks on update")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("beforeValidate: fn(valuesToUpdate, cb)")])]),t._v(" "),a("li",[a("code",[t._v("afterValidate: fn(valuesToUpdate, cb)")])]),t._v(" "),a("li",[a("code",[t._v("beforeUpdate: fn(valuesToUpdate, cb)")])]),t._v(" "),a("li",[a("code",[t._v("afterUpdate: fn(updatedRecord, cb)")])])]),t._v(" "),a("h3",{attrs:{id:"callbacks-on-destroy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#callbacks-on-destroy","aria-hidden":"true"}},[t._v("#")]),t._v(" Callbacks on destroy")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("beforeDestroy")]),t._v(": "),a("code",[t._v("fn(criteria, cb)")])]),t._v(" "),a("li",[a("code",[t._v("afterDestroy")]),t._v(": "),a("code",[t._v("fn(deletedRecord, cb)")])])]),t._v(" "),a("p",[t._v("For example, this could be your "),a("code",[t._v("./api/pet/models/Pet.js")]),t._v(" file:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("module"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("exports "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("/**\n * Basic settings\n */")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// The identity to use.")]),t._v("\n identity"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" settings"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("identity"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// The connection to use.")]),t._v("\n connection"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" settings"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("connection"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Do you want to respect schema?")]),t._v("\n schema"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" settings"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("schema"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Merge simple attributes from settings with those ones.")]),t._v("\n attributes"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" _"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("merge")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("settings"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("attributes"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Do you automatically want to have time data?")]),t._v("\n autoCreatedAt"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" settings"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("autoCreatedAt"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n autoUpdatedAt"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" settings"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("autoUpdatedAt"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("/**\n * Lifecycle callbacks on create\n */")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Before creating a value.")]),t._v("\n beforeCreate"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("values"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Do some stuff")]),t._v("\n "),a("span",{attrs:{class:"token function"}},[t._v("next")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// After creating a value.")]),t._v("\n afterCreate"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("newlyInsertedRecord"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Do some stuff")]),t._v("\n "),a("span",{attrs:{class:"token function"}},[t._v("next")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("/**\n * Lifecycle callbacks on update\n */")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Before updating a value.")]),t._v("\n beforeUpdate"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("valuesToUpdate"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Do some stuff")]),t._v("\n "),a("span",{attrs:{class:"token function"}},[t._v("next")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// After updating a value.")]),t._v("\n afterUpdate"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("updatedRecord"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Do some stuff")]),t._v("\n "),a("span",{attrs:{class:"token function"}},[t._v("next")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("/**\n * Lifecycle callbacks on destroy\n */")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Before destroying a value.")]),t._v("\n beforeDestroy"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("criteria"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Do some stuff")]),t._v("\n "),a("span",{attrs:{class:"token function"}},[t._v("next")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// After destroying a value.")]),t._v("\n afterDestroy"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("destroyedRecords"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Do some stuff")]),t._v("\n "),a("span",{attrs:{class:"token function"}},[t._v("next")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}],!1,null,null,null);e.options.__file="models.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/17.1c93d494.js b/docs/.vuepress/dist/assets/js/17.1c93d494.js new file mode 100644 index 0000000000..f1a4a58550 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/17.1c93d494.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{222:function(t,a,s){"use strict";s.r(a);var n=s(0),e=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"content"},[s("h1",{attrs:{id:"query-interface"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-interface","aria-hidden":"true"}},[t._v("#")]),t._v(" Query Interface")]),t._v(" "),s("p",[t._v("The Waterline Query Interface allows you to interact with your models the same\nway no matter which adapter they are using. This means you can use the same Query\nLanguage whether your data lives in MySQL, MongoDB, PostgreSQL, etc.")]),t._v(" "),s("h2",{attrs:{id:"query-methods"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-methods","aria-hidden":"true"}},[t._v("#")]),t._v(" Query Methods")]),t._v(" "),s("p",[t._v("Every model in Waterline will have a set of query methods exposed on it to allow\nyou to interact with the database in a normalized fashion.\nThese are known as the CRUD ("),s("code",[t._v("Create")]),t._v(", "),s("code",[t._v("Read")]),t._v(", "),s("code",[t._v("Update")]),t._v(" and "),s("code",[t._v("Delete")]),t._v(") methods and\nis the primary way of interacting with your data.")]),t._v(" "),s("p",[t._v("There are also a special set of queries known as "),s("em",[t._v("dynamic queries")]),t._v(".\nThese are special class methods that are dynamically generated when you initialize Waterline.\nWe call them dynamic finders. They perform many of the same functions as the other class\nmethods but you can call them directly on an attribute in your model.")]),t._v(" "),s("p",[t._v("For most class methods, the callback parameter is optional and if one is not supplied,\nit will return a chainable object.")]),t._v(" "),s("h3",{attrs:{id:"find-criteria-callback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#find-criteria-callback","aria-hidden":"true"}},[t._v("#")]),t._v(" .find(criteria, [callback])")]),t._v(" "),s("p",[s("code",[t._v("find")]),t._v(" will return an array of records that match the supplied criteria.\nCriteria can be built using the Query Language.")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("code",[t._v("criteria")]),t._v(" is required and accepts "),s("code",[t._v("{}")]),t._v(", "),s("code",[t._v("[{}]")]),t._v(", "),s("code",[t._v("string")]),t._v(" and "),s("code",[t._v("int")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("callback")]),t._v(" function is optional.")])]),t._v(" "),s("p",[t._v("Any string arguments passed must be the ID of the record.\nThis method will always return records in an array.\nIf you are trying to find an attribute that is an array, you must wrap it in an additional\nset of brackets otherwise Waterline will think you want to perform an "),s("code",[t._v("inQuery")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Walter Jr'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("exec")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" users"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("users"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"findone-criteria-callback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#findone-criteria-callback","aria-hidden":"true"}},[t._v("#")]),t._v(" .findOne(criteria, [callback])")]),t._v(" "),s("p",[s("code",[t._v("findOne")]),t._v(" will return an object with the first matching result in the data store.")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("code",[t._v("criteria")]),t._v(" is required and accepts "),s("code",[t._v("{}")]),t._v(", "),s("code",[t._v("[{}]")]),t._v(", "),s("code",[t._v("string")]),t._v(" and "),s("code",[t._v("int")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("callback")]),t._v(" function is optional.")])]),t._v(" "),s("p",[t._v("Any string arguments passed must be the ID of the record.\nIf you are trying to find an attribute that is an array, you must wrap it in an additional\nset of brackets otherwise Waterline will think you want to perform an "),s("code",[t._v("inQuery")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("findOne")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Walter Jr'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("exec")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" user"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"create-criteria-callback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-criteria-callback","aria-hidden":"true"}},[t._v("#")]),t._v(" .create(criteria, [callback])")]),t._v(" "),s("p",[s("code",[t._v("create")]),t._v(" will attempt to create a new record in the datastore.\nIf the data is valid and passes all validations it will be sent to the adapters "),s("code",[t._v("create")]),t._v(" method.")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("code",[t._v("criteria")]),t._v(" is required and accepts "),s("code",[t._v("{}")]),t._v(" and "),s("code",[t._v("[{}]")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("callback")]),t._v(" function is optional.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("create")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Walter Jr'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("exec")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" user"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"findorcreate-criteria-values-callback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#findorcreate-criteria-values-callback","aria-hidden":"true"}},[t._v("#")]),t._v(" .findOrCreate(criteria, [values, callback])")]),t._v(" "),s("p",[s("code",[t._v("findOrCreate")]),t._v(" will return a single record if one was found or created,\nor an array of records if multiple get found/created via the supplied criteria or values.\nCriteria can be built using the Query Language.")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("code",[t._v("criteria")]),t._v(" is required and accepts "),s("code",[t._v("{}")]),t._v(", "),s("code",[t._v("[{}]")]),t._v(", "),s("code",[t._v("string")]),t._v(" and "),s("code",[t._v("int")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("values")]),t._v(" is optional and accepts "),s("code",[t._v("{}")]),t._v(" and "),s("code",[t._v("[{}]")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("callback")]),t._v(" function is optional.")])]),t._v(" "),s("p",[t._v("Any string arguments passed must be the ID of the record.\nThis method can return a single record or an array of records.\nIf a model is not found and creation values are omitted, it will get created with the supplied criteria values.")]),t._v(" "),s("p",[t._v("Unless an adapter implements its own version of "),s("code",[t._v("findOrCreate")]),t._v(", "),s("code",[t._v("findOrCreate")]),t._v(" will do the\n"),s("code",[t._v("find")]),t._v(" and "),s("code",[t._v("create")]),t._v(" calls in two separate steps (not transactional).\nIn a high frequency scenario it's possible for duplicates to be created if the query field(s) are not indexed.")]),t._v(" "),s("p",[t._v('Either user(s) with the name "Walter Jr" get returned or\na single user gets created with the name "Walter Jr" and returned:')]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("findOrCreate")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Walter Jr'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("exec")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" users"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("users"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"update-search-criteria-values-callback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#update-search-criteria-values-callback","aria-hidden":"true"}},[t._v("#")]),t._v(" .update(search criteria, values, [callback])")]),t._v(" "),s("p",[s("code",[t._v("update")]),t._v(" will attempt to update any records matching the criteria passed in.\nCriteria can be built using the Query Language.")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("code",[t._v("criteria")]),t._v(" is required and accepts "),s("code",[t._v("{}")]),t._v(", "),s("code",[t._v("[{}]")]),t._v(", "),s("code",[t._v("string")]),t._v(" and "),s("code",[t._v("int")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("values")]),t._v(" is required and accepts "),s("code",[t._v("{}")]),t._v(" and "),s("code",[t._v("[{}]")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("callback")]),t._v(" function is optional.")])]),t._v(" "),s("p",[t._v("Although you may pass "),s("code",[t._v(".update()")]),t._v(" an object or an array of objects,\nit will always return an array of objects. Any string arguments passed must be the ID\nof the record. If you specify a primary key instead of a criteria object,\nany "),s("code",[t._v(".where()")]),t._v(" filters will be ignored.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("update")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Walter Jr'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Flynn'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("exec")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" user"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"destroy-criteria-callback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#destroy-criteria-callback","aria-hidden":"true"}},[t._v("#")]),t._v(" .destroy(criteria, [callback])")]),t._v(" "),s("p",[s("code",[t._v("destroy")]),t._v(" will destroy any records matching the provided criteria.\nCriteria can be built using the Query Language.")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("code",[t._v("criteria")]),t._v(" is required and accepts "),s("code",[t._v("{}")]),t._v(", "),s("code",[t._v("[{}]")]),t._v(", "),s("code",[t._v("string")]),t._v(" and "),s("code",[t._v("int")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("callback")]),t._v(" function is optional.")])]),t._v(" "),s("p",[t._v("If you want to confirm the record exists before you delete it,\nyou must first perform a "),s("code",[t._v(".find()")]),t._v(". Any string arguments passed must be the ID of the record.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("destroy")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Flynn'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("exec")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"query-query-data-callback"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-query-data-callback","aria-hidden":"true"}},[t._v("#")]),t._v(" .query(query, [data], callback)")]),t._v(" "),s("p",[t._v("Some adapters, such as "),s("code",[t._v("sails-mysql")]),t._v(" and "),s("code",[t._v("sails-postgresql")]),t._v(", support the query function\nwhich will run the provided RAW query against the database.\nThis can sometimes be useful if you want to run complex queries and performance is very important.")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("code",[t._v("query")]),t._v(" is required and accepts "),s("code",[t._v("string")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("data")]),t._v(" is optional and accepts "),s("code",[t._v("array")]),t._v(" data types.")]),t._v(" "),s("li",[t._v("The "),s("code",[t._v("callback")]),t._v(" function is required.")])]),t._v(" "),s("p",[t._v("The type of the results returned depend on your adapter: "),s("code",[t._v("sails-mysql")]),t._v(" returns an array of objects\nand "),s("code",[t._v("sails-postgresql")]),t._v(" returns an object containing metadata and the actual results within a 'rows' array.\nThis function does currently not support promises.")]),t._v(" "),s("p",[t._v("Using PostgreSQL:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" title "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v('"The King\'s Speech"')]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nMovie"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("query")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token string"}},[t._v("'SELECT * FROM movie WHERE title = $1'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("title"),s("span",{attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" results"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token string"}},[t._v("'Found the following movie: '")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" results"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("rows"),s("span",{attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{attrs:{class:"token number"}},[t._v("0")]),s("span",{attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Using MySQL:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" title "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v('"The King\'s Speech"')]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nMovie"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("query")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token string"}},[t._v("'SELECT * FROM movie WHERE title = $1'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("title"),s("span",{attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" results"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("log")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token string"}},[t._v("'Found the following movie: '")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" results"),s("span",{attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{attrs:{class:"token number"}},[t._v("0")]),s("span",{attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"query-language"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-language","aria-hidden":"true"}},[t._v("#")]),t._v(" Query Language")]),t._v(" "),s("p",[t._v("The Waterline Query Language is an object based criteria used to retrieve the\nrecords from any of the supported database adapters.\nThis allows you to change your database without changing your codebase.")]),t._v(" "),s("p",[t._v("All queries inside of Waterline are case insensitive. This allows for easier querying\nbut makes indexing strings tough. This is something to be aware of if you are\nindexing and searching on string fields.")]),t._v(" "),s("h3",{attrs:{id:"query-language-basics"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-language-basics","aria-hidden":"true"}},[t._v("#")]),t._v(" Query Language Basics")]),t._v(" "),s("p",[t._v("The criteria objects are formed using one of four types of object keys.\nThese are the top level keys used in a query object. It is loosely based on the\ncriteria used in MongoDB with a few slight variations.")]),t._v(" "),s("p",[t._v("Queries can be built using either a "),s("code",[t._v("where")]),t._v(" key to specify attributes,\nwhich will allow you to also use query options such as "),s("code",[t._v("limit")]),t._v(" and "),s("code",[t._v("skip")]),t._v(" or\nif "),s("code",[t._v("where")]),t._v(" is excluded the entire object will be treated as a "),s("code",[t._v("where")]),t._v(" criteria.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n skip"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("20")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n limit"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("10")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n sort"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'name DESC'")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Or:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"key-pairs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#key-pairs","aria-hidden":"true"}},[t._v("#")]),t._v(" Key Pairs")]),t._v(" "),s("p",[t._v("A key pair can be used to search records for values matching exactly what is specified.\nThis is the base of a criteria object where the key represents an attribute on a model\nand the value is a strict equality check of the records for matching values.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("They can be used together to search multiple attributes:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n country"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'France'")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"modified-pairs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#modified-pairs","aria-hidden":"true"}},[t._v("#")]),t._v(" Modified Pairs")]),t._v(" "),s("p",[t._v("Modified pairs also have model attributes for keys but they also use any of the\nsupported criteria modifiers to perform queries where a strict equality check wouldn't work.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n contains"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'alt'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("h4",{attrs:{id:"in-pairs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#in-pairs","aria-hidden":"true"}},[t._v("#")]),t._v(" In Pairs")]),t._v(" "),s("p",[t._v("In queries work similarly to MySQL "),s("code",[t._v("in")]),t._v(" queries. Each element in the array is treated as "),s("code",[t._v("or")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Walter'")]),s("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"not-in-pairs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#not-in-pairs","aria-hidden":"true"}},[t._v("#")]),t._v(" Not-In Pairs")]),t._v(" "),s("p",[t._v("Not-In queries work similar to "),s("code",[t._v("in")]),t._v(" queries, except for the nested object criteria.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'!'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Walter'")]),s("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"or-pairs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#or-pairs","aria-hidden":"true"}},[t._v("#")]),t._v(" Or Pairs")]),t._v(" "),s("p",[t._v("Performing "),s("code",[t._v("OR")]),t._v(" queries is done by using an array of query pairs.\nResults will be returned that match any of the criteria objects inside the array.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n or"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n occupation"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'Developer'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"criteria-modifiers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#criteria-modifiers","aria-hidden":"true"}},[t._v("#")]),t._v(" Criteria Modifiers")]),t._v(" "),s("p",[t._v("The following modifiers are available to use when building queries:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("<")]),t._v(" or "),s("code",[t._v("lessThan")])]),t._v(" "),s("li",[s("code",[t._v("<=")]),t._v(" or "),s("code",[t._v("lessThanOrEqual")])]),t._v(" "),s("li",[s("code",[t._v(">")]),t._v(" or "),s("code",[t._v("greaterThan")])]),t._v(" "),s("li",[s("code",[t._v(">=")]),t._v(" or "),s("code",[t._v("greaterThanOrEqual")])]),t._v(" "),s("li",[s("code",[t._v("!")]),t._v(" or "),s("code",[t._v("not")])]),t._v(" "),s("li",[s("code",[t._v("like")])]),t._v(" "),s("li",[s("code",[t._v("contains")])]),t._v(" "),s("li",[s("code",[t._v("startsWith")])]),t._v(" "),s("li",[s("code",[t._v("endsWith")])])]),t._v(" "),s("h4",{attrs:{id:"or-lessthan"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#or-lessthan","aria-hidden":"true"}},[t._v("#")]),t._v(" < or lessThan")]),t._v(" "),s("p",[t._v("Searches for records where the value is less than the value specified.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n age"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'<'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("30")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"or-lessthanorequal"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#or-lessthanorequal","aria-hidden":"true"}},[t._v("#")]),t._v(" <= or lessThanOrEqual")]),t._v(" "),s("p",[t._v("Searches for records where the value is less or equal to the value specified.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n age"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'<='")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("21")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"or-greaterthan"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#or-greaterthan","aria-hidden":"true"}},[t._v("#")]),t._v(" > or greaterThan")]),t._v(" "),s("p",[t._v("Searches for records where the value is more than the value specified.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n age"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'>'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("18")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"or-greaterthanorequal"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#or-greaterthanorequal","aria-hidden":"true"}},[t._v("#")]),t._v(" >= or greaterThanOrEqual")]),t._v(" "),s("p",[t._v("Searches for records where the value is more or equal to the value specified.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n age"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'>='")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("21")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"or-not"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#or-not","aria-hidden":"true"}},[t._v("#")]),t._v(" ! or not")]),t._v(" "),s("p",[t._v("Searches for records where the value is not equal to the value specified.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'!'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"like"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#like","aria-hidden":"true"}},[t._v("#")]),t._v(" like")]),t._v(" "),s("p",[t._v("Searches for records using pattern matching with the "),s("code",[t._v("%")]),t._v(" sign.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n food"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'like'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'%burgers'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"contains"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contains","aria-hidden":"true"}},[t._v("#")]),t._v(" contains")]),t._v(" "),s("p",[t._v("A shorthand for pattern matching both sides of a string.\nWill return records where the value contains the string anywhere inside of it.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'like'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'%history%'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'contains'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'history'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"startswith"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#startswith","aria-hidden":"true"}},[t._v("#")]),t._v(" startsWith")]),t._v(" "),s("p",[t._v("A shorthand for pattern matching the right side of a string\nWill return records where the value starts with the supplied string value.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'startsWith'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'french'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'like'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'french%'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"endswith"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#endswith","aria-hidden":"true"}},[t._v("#")]),t._v(" endsWith")]),t._v(" "),s("p",[t._v("A shorthand for pattern matching the left side of a string.\nWill return records where the value ends with the supplied string value.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'endsWith'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'can'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'like'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'%can'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"date-ranges"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#date-ranges","aria-hidden":"true"}},[t._v("#")]),t._v(" Date Ranges")]),t._v(" "),s("p",[t._v("You can do date range queries using the comparison operators.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n date"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'>'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("Date")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token string"}},[t._v("'2/4/2014'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'<'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("Date")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token string"}},[t._v("'2/7/2014'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"query-options"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#query-options","aria-hidden":"true"}},[t._v("#")]),t._v(" Query Options")]),t._v(" "),s("p",[t._v("Query options allow you refine the results that are returned from a query.")]),t._v(" "),s("h4",{attrs:{id:"limit-results"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#limit-results","aria-hidden":"true"}},[t._v("#")]),t._v(" Limit results")]),t._v(" "),s("p",[t._v("Limit the number of results returned from a query.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n limit"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("20")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"skip-results"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#skip-results","aria-hidden":"true"}},[t._v("#")]),t._v(" Skip results")]),t._v(" "),s("p",[t._v("Return all the results excluding the number of items to skip.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n skip"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("10")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"pagination"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pagination","aria-hidden":"true"}},[t._v("#")]),t._v(" Pagination")]),t._v(" "),s("p",[s("code",[t._v("skip")]),t._v(" and "),s("code",[t._v("limit")]),t._v(" can be used together to build up a pagination system.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n limit"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("10")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n skip"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("10")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"sort-results"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sort-results","aria-hidden":"true"}},[t._v("#")]),t._v(" Sort results")]),t._v(" "),s("p",[t._v("Results can be sorted by attribute name. Simply specify an attribute name for\nnatural (ascending) sort, or specify an "),s("code",[t._v("asc")]),t._v(" or "),s("code",[t._v("desc")]),t._v(" flag for ascending or\ndescending orders respectively.")]),t._v(" "),s("p",[t._v("Sort by name in ascending order:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n sort"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'name'")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Sort by name in descending order:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n sort"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'name DESC'")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Sort by name in ascending order:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n sort"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'name ASC'")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Sort by binary notation")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n sort"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("Sort by multiple attributes:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token string"}},[t._v("'John'")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n sort"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n name"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("1")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n age"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h4",{attrs:{id:"select-a-field"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#select-a-field","aria-hidden":"true"}},[t._v("#")]),t._v(" Select a field")]),t._v(" "),s("p",[t._v("Apply a projection to a Waterline query.")]),t._v(" "),s("p",[t._v("This example only returns the field name:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("User"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("find")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n where"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n age"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token string"}},[t._v("'<'")]),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token number"}},[t._v("30")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n select"),s("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{attrs:{class:"token string"}},[t._v("'name'")]),s("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}],!1,null,null,null);e.options.__file="queries.md";a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/18.e1f1758f.js b/docs/.vuepress/dist/assets/js/18.e1f1758f.js new file mode 100644 index 0000000000..469d3450bc --- /dev/null +++ b/docs/.vuepress/dist/assets/js/18.e1f1758f.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{221:function(t,s,a){"use strict";a.r(s);var e=a(0),n=Object(e.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),a("p",[t._v("Request header object.")]),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),a("p",[t._v("Request method.")]),t._v(" "),t._m(7),t._v(" "),t._m(8),t._v(" "),t._m(9),t._v(" "),t._m(10),t._v(" "),t._m(11),t._v(" "),a("p",[t._v("Get request URL.")]),t._v(" "),t._m(12),t._v(" "),a("p",[t._v("Set request URL, useful for url rewrites.")]),t._v(" "),t._m(13),t._v(" "),a("p",[t._v("Get request original URL.")]),t._v(" "),t._m(14),t._v(" "),t._m(15),t._v(" "),t._m(16),t._m(17),t._v(" "),t._m(18),t._v(" "),t._m(19),t._m(20),t._v(" "),a("p",[t._v("Get request pathname.")]),t._v(" "),t._m(21),t._v(" "),a("p",[t._v("Set request pathname and retain query-string when present.")]),t._v(" "),t._m(22),t._v(" "),t._m(23),t._v(" "),t._m(24),t._v(" "),a("p",[t._v("Set raw query string.")]),t._v(" "),t._m(25),t._v(" "),t._m(26),t._v(" "),t._m(27),t._v(" "),a("p",[t._v("Set raw query string.")]),t._v(" "),t._m(28),t._v(" "),t._m(29),t._v(" "),t._m(30),t._v(" "),t._m(31),t._v(" "),t._m(32),t._v(" "),t._m(33),t._v(" "),t._m(34),t._m(35),t._v(" "),t._m(36),t._v(" "),t._m(37),t._m(38),t._v(" "),t._m(39),t._v(" "),a("p",[t._v('For example "color=blue&size=small":')]),t._v(" "),t._m(40),t._m(41),t._v(" "),t._m(42),t._v(" "),t._m(43),t._m(44),t._v(" "),t._m(45),t._v(" "),t._m(46),t._m(47),t._v(" "),t._m(48),t._v(" "),t._m(49),t._v(" "),t._m(50),t._v(" "),t._m(51),t._v(" "),t._m(52),t._v(" "),t._m(53),t._v(" "),t._m(54),t._v(" "),t._m(55),t._v(" "),t._m(56),t._v(" "),t._m(57),t._v(" "),a("p",[t._v("Return subdomains as an array.")]),t._v(" "),t._m(58),t._v(" "),t._m(59),t._v(" "),t._m(60),t._v(" "),t._m(61),t._v(" "),t._m(62),a("p",[t._v("For example if you want to ensure that\nonly images are sent to a given route:")]),t._v(" "),t._m(63),t._m(64),t._v(" "),a("p",[t._v("Strapi's "),a("code",[t._v("request")]),t._v(" object includes helpful content negotiation utilities powered by\n"),a("a",{attrs:{href:"http://github.com/expressjs/accepts",target:"_blank",rel:"noopener noreferrer"}},[t._v("accepts"),a("OutboundLink")],1),t._v(" and\n"),a("a",{attrs:{href:"https://github.com/federomero/negotiator",target:"_blank",rel:"noopener noreferrer"}},[t._v("negotiator"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("These utilities are:")]),t._v(" "),t._m(65),t._v(" "),a("p",[t._v("If no types are supplied, all acceptable types are returned.")]),t._v(" "),t._m(66),t._v(" "),a("p",[t._v("In the case of missing accept headers where any type is acceptable, the first type will\nbe returned. Thus, the order of types you supply is important.")]),t._v(" "),t._m(67),t._v(" "),t._m(68),t._v(" "),t._m(69),t._m(70),t._v(" "),t._m(71),t._m(72),t._v(" "),t._m(73),t._v(" "),t._m(74),a("p",[t._v("When no arguments are given all accepted encodings\nare returned as an array:")]),t._v(" "),t._m(75),t._m(76),t._v(" "),t._m(77),t._v(" "),t._m(78),t._v(" "),t._m(79),a("p",[t._v("When no arguments are given all accepted charsets\nare returned as an array:")]),t._v(" "),t._m(80),t._m(81),t._v(" "),t._m(82),t._v(" "),t._m(83),a("p",[t._v("When no arguments are given all accepted languages\nare returned as an array:")]),t._v(" "),t._m(84),t._m(85),t._v(" "),a("p",[t._v("Check if the request is idempotent.")]),t._v(" "),t._m(86),t._v(" "),a("p",[t._v("Return the request socket.")]),t._v(" "),t._m(87),t._v(" "),a("p",[t._v("Return request header.")])])},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"request"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request","aria-hidden":"true"}},[this._v("#")]),this._v(" Request")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("A Strapi "),s("code",[this._v("Request")]),this._v(" object is an abstraction on top of Node's vanilla request object,\nproviding additional functionality that is useful for every day HTTP server\ndevelopment.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api","aria-hidden":"true"}},[this._v("#")]),this._v(" API")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-header"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-header","aria-hidden":"true"}},[this._v("#")]),this._v(" request.header")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-headers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-headers","aria-hidden":"true"}},[this._v("#")]),this._v(" request.headers")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Request header object. Alias as "),s("code",[this._v("request.header")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-method"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-method","aria-hidden":"true"}},[this._v("#")]),this._v(" request.method")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-method-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-method-2","aria-hidden":"true"}},[this._v("#")]),this._v(" request.method=")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Set request method, useful for implementing middleware\nsuch as "),s("code",[this._v("methodOverride()")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-length"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-length","aria-hidden":"true"}},[this._v("#")]),this._v(" request.length")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Return request Content-Length as a number when present, or "),s("code",[this._v("undefined")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-url"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-url","aria-hidden":"true"}},[this._v("#")]),this._v(" request.url")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-url-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-url-2","aria-hidden":"true"}},[this._v("#")]),this._v(" request.url=")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-originalurl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-originalurl","aria-hidden":"true"}},[this._v("#")]),this._v(" request.originalUrl")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-origin"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-origin","aria-hidden":"true"}},[this._v("#")]),this._v(" request.origin")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Get origin of URL, include "),s("code",[this._v("protocol")]),this._v(" and "),s("code",[this._v("host")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[this._v("this")]),s("span",{attrs:{class:"token punctuation"}},[this._v(".")]),this._v("request"),s("span",{attrs:{class:"token punctuation"}},[this._v(".")]),this._v("origin\n"),s("span",{attrs:{class:"token comment"}},[this._v("// => http://example.com")]),this._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-href"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-href","aria-hidden":"true"}},[this._v("#")]),this._v(" request.href")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Get full request URL, include "),s("code",[this._v("protocol")]),this._v(", "),s("code",[this._v("host")]),this._v(" and "),s("code",[this._v("url")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[this._v("this")]),s("span",{attrs:{class:"token punctuation"}},[this._v(".")]),this._v("request"),s("span",{attrs:{class:"token punctuation"}},[this._v(".")]),this._v("href\n"),s("span",{attrs:{class:"token comment"}},[this._v("// => http://example.com/foo/bar?q=1")]),this._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-path"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-path","aria-hidden":"true"}},[this._v("#")]),this._v(" request.path")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-path-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-path-2","aria-hidden":"true"}},[this._v("#")]),this._v(" request.path=")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-querystring"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-querystring","aria-hidden":"true"}},[this._v("#")]),this._v(" request.querystring")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Get raw query string void of "),s("code",[this._v("?")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-querystring-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-querystring-2","aria-hidden":"true"}},[this._v("#")]),this._v(" request.querystring=")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-search","aria-hidden":"true"}},[this._v("#")]),this._v(" request.search")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Get raw query string with the "),s("code",[this._v("?")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-search-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-search-2","aria-hidden":"true"}},[this._v("#")]),this._v(" request.search=")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-host"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-host","aria-hidden":"true"}},[this._v("#")]),this._v(" request.host")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("p",[t._v("Get host (hostname:port) when present. Supports "),a("code",[t._v("X-Forwarded-Host")]),t._v("\nwhen "),a("code",[t._v("strapi.app.proxy")]),t._v(" is "),a("code",[t._v("true")]),t._v(", otherwise "),a("code",[t._v("Host")]),t._v(" is used.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-hostname"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-hostname","aria-hidden":"true"}},[this._v("#")]),this._v(" request.hostname")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("p",[t._v("Get hostname when present. Supports "),a("code",[t._v("X-Forwarded-Host")]),t._v("\nwhen "),a("code",[t._v("strapi.app.proxy")]),t._v(" is "),a("code",[t._v("true")]),t._v(", otherwise "),a("code",[t._v("Host")]),t._v(" is used.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-type","aria-hidden":"true"}},[this._v("#")]),this._v(" request.type")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Get request "),s("code",[this._v("Content-Type")]),this._v(' void of parameters such as "charset".')])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ct "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("request"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("type"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "image/png"')]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-charset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-charset","aria-hidden":"true"}},[this._v("#")]),this._v(" request.charset")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Get request charset when present, or "),s("code",[this._v("undefined")]),this._v(":")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[this._v("this")]),s("span",{attrs:{class:"token punctuation"}},[this._v(".")]),this._v("request"),s("span",{attrs:{class:"token punctuation"}},[this._v(".")]),this._v("charset\n"),s("span",{attrs:{class:"token comment"}},[this._v('// => "utf-8"')]),this._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-query"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-query","aria-hidden":"true"}},[this._v("#")]),this._v(" request.query")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Get parsed query-string, returning an empty object when no\nquery-string is present. Note that this getter does "),s("em",[this._v("not")]),this._v("\nsupport nested parsing.")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n color"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'blue'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n size"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'small'")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-query-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-query-2","aria-hidden":"true"}},[this._v("#")]),this._v(" request.query=")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Set query-string to the given object. Note that this\nsetter does "),s("em",[this._v("not")]),this._v(" support nested objects.")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("query "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'/login'")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-fresh"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-fresh","aria-hidden":"true"}},[this._v("#")]),this._v(" request.fresh")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("p",[t._v('Check if a request cache is "fresh", aka the contents have not changed. This\nmethod is for cache negotiation between '),a("code",[t._v("If-None-Match")]),t._v(" / "),a("code",[t._v("ETag")]),t._v(", and\n"),a("code",[t._v("If-Modified-Since")]),t._v(" and "),a("code",[t._v("Last-Modified")]),t._v(". It should be referenced after setting\none or more of these response headers.")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// freshness check requires status 20x or 304")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("status "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("200")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("set")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'ETag'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'123'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{attrs:{class:"token comment"}},[t._v("// cache is ok")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("fresh"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("status "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("304")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("return")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{attrs:{class:"token comment"}},[t._v("// cache is stale")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// fetch new data")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" db"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("find")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'something'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-stale"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-stale","aria-hidden":"true"}},[this._v("#")]),this._v(" request.stale")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Inverse of "),s("code",[this._v("request.fresh")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-protocol"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-protocol","aria-hidden":"true"}},[this._v("#")]),this._v(" request.protocol")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v('Return request protocol, "https" or "http". Supports '),s("code",[this._v("X-Forwarded-Proto")]),this._v("\nwhen "),s("code",[this._v("strapi.app.proxy")]),this._v(" is "),s("code",[this._v("true")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-secure"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-secure","aria-hidden":"true"}},[this._v("#")]),this._v(" request.secure")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Shorthand for "),s("code",[this._v('this.protocol == "https"')]),this._v(" to check if a request was\nissued via TLS.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-ip"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-ip","aria-hidden":"true"}},[this._v("#")]),this._v(" request.ip")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Request remote address. Supports "),s("code",[this._v("X-Forwarded-For")]),this._v(" when "),s("code",[this._v("strapi.app.proxy")]),this._v("\nis "),s("code",[this._v("true")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-ips"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-ips","aria-hidden":"true"}},[this._v("#")]),this._v(" request.ips")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("When "),s("code",[this._v("X-Forwarded-For")]),this._v(" is present and "),s("code",[this._v("strapi.app.proxy")]),this._v(" is enabled an array\nof these ips is returned, ordered from upstream -> downstream. When disabled\nan empty array is returned.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-subdomains"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-subdomains","aria-hidden":"true"}},[this._v("#")]),this._v(" request.subdomains")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Subdomains are the dot-separated parts of the host before the main domain of\nthe app. By default, the domain of the app is assumed to be the last two\nparts of the host. This can be changed by setting "),s("code",[this._v("strapi.app.subdomainOffset")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("p",[t._v('For example, if the domain is "tobi.ferrets.example.com":\nIf '),a("code",[t._v("strapi.app.subdomainOffset")]),t._v(" is not set, this.subdomains is "),a("code",[t._v('["ferrets", "tobi"]')]),t._v(".\nIf "),a("code",[t._v("strapi.app.subdomainOffset")]),t._v(" is 3, this.subdomains is "),a("code",[t._v('["tobi"]')]),t._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-is-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-is-types","aria-hidden":"true"}},[this._v("#")]),this._v(" request.is(types...)")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v('Check if the incoming request contains the "Content-Type"\nheader field, and it contains any of the give mime '),s("code",[this._v("type")]),this._v("s.\nIf there is no request body, "),s("code",[this._v("undefined")]),this._v(" is returned.\nIf there is no content type, or the match fails "),s("code",[this._v("false")]),this._v(" is returned.\nOtherwise, it returns the matching content-type.")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// With Content-Type: text/html; charset=utf-8")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// => 'html'")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'text/html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// => 'text/html'")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'text/*'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'text/html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// => 'text/html'")]),t._v("\n\n"),a("span",{attrs:{class:"token operator"}},[t._v("/")]),a("span",{attrs:{class:"token operator"}},[t._v("/")]),t._v(" When Content"),a("span",{attrs:{class:"token operator"}},[t._v("-")]),t._v("Type is application"),a("span",{attrs:{class:"token operator"}},[t._v("/")]),t._v("json\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'urlencoded'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("/")]),a("span",{attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'application/json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("/")]),a("span",{attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'application/json'")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'application/*'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// => 'application/json'")]),t._v("\n\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("/")]),a("span",{attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'image/*'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// process")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("else")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("throw")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token number"}},[t._v("415")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'images only!'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"content-negotiation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#content-negotiation","aria-hidden":"true"}},[this._v("#")]),this._v(" Content Negotiation")])},function(){var t=this.$createElement,s=this._self._c||t;return s("ul",[s("li",[s("code",[this._v("request.accepts(types)")])]),this._v(" "),s("li",[s("code",[this._v("request.acceptsEncodings(types)")])]),this._v(" "),s("li",[s("code",[this._v("request.acceptsCharsets(charsets)")])]),this._v(" "),s("li",[s("code",[this._v("request.acceptsLanguages(langs)")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("If multiple types are supplied, the best match will be returned. If no matches are found,\na "),s("code",[this._v("false")]),this._v(" is returned, and you should send a "),s("code",[this._v('406 "Not Acceptable"')]),this._v(" response to the client.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-accepts-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-accepts-types","aria-hidden":"true"}},[this._v("#")]),this._v(" request.accepts(types)")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("p",[t._v("Check if the given "),a("code",[t._v("type(s)")]),t._v(" is acceptable, returning the best match when true, otherwise\n"),a("code",[t._v("false")]),t._v(". The "),a("code",[t._v("type")]),t._v(' value may be one or more mime type string\nsuch as "application/json", the extension name\nsuch as "json", or an array '),a("code",[t._v('["json", "html", "text/plain"]')]),t._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// Accept: text/html")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "html"')]),t._v("\n\n"),a("span",{attrs:{class:"token comment"}},[t._v("// Accept: text/*, application/json")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "html"')]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'text/html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "text/html"')]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'text'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "json"')]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'application/json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "application/json"')]),t._v("\n\n"),a("span",{attrs:{class:"token comment"}},[t._v("// Accept: text/*, application/json")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'image/png'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'png'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v("// => false")]),t._v("\n\n"),a("span",{attrs:{class:"token comment"}},[t._v("// Accept: text/*;q=.5, application/json")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "json"')]),t._v("\n\n"),a("span",{attrs:{class:"token comment"}},[t._v("// No Accept header")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "html"')]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "json"')]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("You may call "),s("code",[this._v("this.accepts()")]),this._v(" as many times as you like,\nor use a switch:")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("switch")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accepts")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'text'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("case")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'json'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("break")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("case")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("break")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("case")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'text'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("break")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("default")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("throw")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token number"}},[t._v("406")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'json, html, or text only'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-acceptsencodings-encodings"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-acceptsencodings-encodings","aria-hidden":"true"}},[this._v("#")]),this._v(" request.acceptsEncodings(encodings)")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Check if "),s("code",[this._v("encodings")]),this._v(" are acceptable, returning the best match when true, otherwise "),s("code",[this._v("false")]),this._v(".\nNote that you should include "),s("code",[this._v("identity")]),this._v(" as one of the encodings!")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// Accept-Encoding: gzip")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsEncodings")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'gzip'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'deflate'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'identity'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "gzip"')]),t._v("\n\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsEncodings")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v("'gzip'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'deflate'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'identity'")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "gzip"')]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// Accept-Encoding: gzip, deflate")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsEncodings")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => ["gzip", "deflate", "identity"]')]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Note that the "),s("code",[this._v("identity")]),this._v(" encoding (which means no encoding) could be unacceptable if\nthe client explicitly sends "),s("code",[this._v("identity;q=0")]),this._v(". Although this is an edge case, you should\nstill handle the case where this method returns "),s("code",[this._v("false")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-acceptscharsets-charsets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-acceptscharsets-charsets","aria-hidden":"true"}},[this._v("#")]),this._v(" request.acceptsCharsets(charsets)")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Check if "),s("code",[this._v("charsets")]),this._v(" are acceptable, returning\nthe best match when true, otherwise "),s("code",[this._v("false")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsCharsets")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'utf-8'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'utf-7'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "utf-8"')]),t._v("\n\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsCharsets")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v("'utf-7'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'utf-8'")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "utf-8"')]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsCharsets")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => ["utf-8", "utf-7", "iso-8859-1"]')]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-acceptslanguages-langs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-acceptslanguages-langs","aria-hidden":"true"}},[this._v("#")]),this._v(" request.acceptsLanguages(langs)")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Check if "),s("code",[this._v("langs")]),this._v(" are acceptable, returning\nthe best match when true, otherwise "),s("code",[this._v("false")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// Accept-Language: en;q=0.8, es, pt")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsLanguages")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'es'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'en'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "es"')]),t._v("\n\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsLanguages")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v("'en'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'es'")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "es"')]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token comment"}},[t._v("// Accept-Language: en;q=0.8, es, pt")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("acceptsLanguages")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => ["es", "pt", "en"]')]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-idempotent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-idempotent","aria-hidden":"true"}},[this._v("#")]),this._v(" request.idempotent")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-socket"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-socket","aria-hidden":"true"}},[this._v("#")]),this._v(" request.socket")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"request-get-field"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-get-field","aria-hidden":"true"}},[this._v("#")]),this._v(" request.get(field)")])}],!1,null,null,null);n.options.__file="request.md";s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/19.8d1b00cd.js b/docs/.vuepress/dist/assets/js/19.8d1b00cd.js new file mode 100644 index 0000000000..03d98c928c --- /dev/null +++ b/docs/.vuepress/dist/assets/js/19.8d1b00cd.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{220:function(t,s,a){"use strict";a.r(s);var e=a(0),n=Object(e.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response","aria-hidden":"true"}},[t._v("#")]),t._v(" Response")]),t._v(" "),a("p",[t._v("A Strapi "),a("code",[t._v("Response")]),t._v(" object is an abstraction on top of Node's vanilla response object,\nproviding additional functionality that is useful for every day HTTP server\ndevelopment.")]),t._v(" "),a("h2",{attrs:{id:"api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api","aria-hidden":"true"}},[t._v("#")]),t._v(" API")]),t._v(" "),a("h3",{attrs:{id:"response-header"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-header","aria-hidden":"true"}},[t._v("#")]),t._v(" response.header")]),t._v(" "),a("p",[t._v("Response header object.")]),t._v(" "),a("h3",{attrs:{id:"response-headers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-headers","aria-hidden":"true"}},[t._v("#")]),t._v(" response.headers")]),t._v(" "),a("p",[t._v("Response header object. Alias as "),a("code",[t._v("response.header")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"response-socket"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-socket","aria-hidden":"true"}},[t._v("#")]),t._v(" response.socket")]),t._v(" "),a("p",[t._v("Request socket.")]),t._v(" "),a("h3",{attrs:{id:"response-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-status","aria-hidden":"true"}},[t._v("#")]),t._v(" response.status")]),t._v(" "),a("p",[t._v("Get response status. By default, "),a("code",[t._v("response.status")]),t._v(" is not set unlike Node's\n"),a("code",[t._v("res.statusCode")]),t._v(" which defaults to "),a("code",[t._v("200")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"response-status-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-status-2","aria-hidden":"true"}},[t._v("#")]),t._v(" response.status=")]),t._v(" "),a("p",[t._v("Set response status via numeric code:")]),t._v(" "),a("ul",[a("li",[t._v('100 "continue"')]),t._v(" "),a("li",[t._v('101 "switching protocols"')]),t._v(" "),a("li",[t._v('102 "processing"')]),t._v(" "),a("li",[t._v('200 "ok"')]),t._v(" "),a("li",[t._v('201 "created"')]),t._v(" "),a("li",[t._v('202 "accepted"')]),t._v(" "),a("li",[t._v('203 "non-authoritative information"')]),t._v(" "),a("li",[t._v('204 "no content"')]),t._v(" "),a("li",[t._v('205 "reset content"')]),t._v(" "),a("li",[t._v('206 "partial content"')]),t._v(" "),a("li",[t._v('207 "multi-status"')]),t._v(" "),a("li",[t._v('300 "multiple choices"')]),t._v(" "),a("li",[t._v('301 "moved permanently"')]),t._v(" "),a("li",[t._v('302 "moved temporarily"')]),t._v(" "),a("li",[t._v('303 "see other"')]),t._v(" "),a("li",[t._v('304 "not modified"')]),t._v(" "),a("li",[t._v('305 "use proxy"')]),t._v(" "),a("li",[t._v('307 "temporary redirect"')]),t._v(" "),a("li",[t._v('400 "bad request"')]),t._v(" "),a("li",[t._v('401 "unauthorized"')]),t._v(" "),a("li",[t._v('402 "payment required"')]),t._v(" "),a("li",[t._v('403 "forbidden"')]),t._v(" "),a("li",[t._v('404 "not found"')]),t._v(" "),a("li",[t._v('405 "method not allowed"')]),t._v(" "),a("li",[t._v('406 "not acceptable"')]),t._v(" "),a("li",[t._v('407 "proxy authentication required"')]),t._v(" "),a("li",[t._v('408 "request time-out"')]),t._v(" "),a("li",[t._v('409 "conflict"')]),t._v(" "),a("li",[t._v('410 "gone"')]),t._v(" "),a("li",[t._v('411 "length required"')]),t._v(" "),a("li",[t._v('412 "precondition failed"')]),t._v(" "),a("li",[t._v('413 "request entity too large"')]),t._v(" "),a("li",[t._v('414 "request-uri too large"')]),t._v(" "),a("li",[t._v('415 "unsupported media type"')]),t._v(" "),a("li",[t._v('416 "requested range not satisfiable"')]),t._v(" "),a("li",[t._v('417 "expectation failed"')]),t._v(" "),a("li",[t._v('418 "i\'m a teapot"')]),t._v(" "),a("li",[t._v('422 "unprocessable entity"')]),t._v(" "),a("li",[t._v('423 "locked"')]),t._v(" "),a("li",[t._v('424 "failed dependency"')]),t._v(" "),a("li",[t._v('425 "unordered collection"')]),t._v(" "),a("li",[t._v('426 "upgrade required"')]),t._v(" "),a("li",[t._v('428 "precondition required"')]),t._v(" "),a("li",[t._v('429 "too many requests"')]),t._v(" "),a("li",[t._v('431 "request header fields too large"')]),t._v(" "),a("li",[t._v('500 "internal server error"')]),t._v(" "),a("li",[t._v('501 "not implemented"')]),t._v(" "),a("li",[t._v('502 "bad gateway"')]),t._v(" "),a("li",[t._v('503 "service unavailable"')]),t._v(" "),a("li",[t._v('504 "gateway time-out"')]),t._v(" "),a("li",[t._v('505 "http version not supported"')]),t._v(" "),a("li",[t._v('506 "variant also negotiates"')]),t._v(" "),a("li",[t._v('507 "insufficient storage"')]),t._v(" "),a("li",[t._v('509 "bandwidth limit exceeded"')]),t._v(" "),a("li",[t._v('510 "not extended"')]),t._v(" "),a("li",[t._v('511 "network authentication required"')])]),t._v(" "),a("p",[t._v("Don't worry too much about memorizing these strings, if you have a typo an error will be thrown,\ndisplaying this list so you can make a correction.")]),t._v(" "),a("h3",{attrs:{id:"response-message"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-message","aria-hidden":"true"}},[t._v("#")]),t._v(" response.message")]),t._v(" "),a("p",[t._v("Get response status message. By default, "),a("code",[t._v("response.message")]),t._v(" is\nassociated with "),a("code",[t._v("response.status")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"response-message-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-message-2","aria-hidden":"true"}},[t._v("#")]),t._v(" response.message=")]),t._v(" "),a("p",[t._v("Set response status message to the given value.")]),t._v(" "),a("h3",{attrs:{id:"response-length"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-length","aria-hidden":"true"}},[t._v("#")]),t._v(" response.length=")]),t._v(" "),a("p",[t._v("Set response Content-Length to the given value.")]),t._v(" "),a("h3",{attrs:{id:"response-length-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-length-2","aria-hidden":"true"}},[t._v("#")]),t._v(" response.length")]),t._v(" "),a("p",[t._v("Return response Content-Length as a number when present, or deduce\nfrom "),a("code",[t._v("this.body")]),t._v(" when possible, or "),a("code",[t._v("undefined")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"response-body"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-body","aria-hidden":"true"}},[t._v("#")]),t._v(" response.body")]),t._v(" "),a("p",[t._v("Get response body.")]),t._v(" "),a("h3",{attrs:{id:"response-body-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-body-2","aria-hidden":"true"}},[t._v("#")]),t._v(" response.body=")]),t._v(" "),a("p",[t._v("Set response body to one of the following:")]),t._v(" "),a("ul",[a("li",[a("code",[t._v("string")]),t._v(" written")]),t._v(" "),a("li",[a("code",[t._v("Buffer")]),t._v(" written")]),t._v(" "),a("li",[a("code",[t._v("Stream")]),t._v(" piped")]),t._v(" "),a("li",[a("code",[t._v("Object")]),t._v(" json-stringified")]),t._v(" "),a("li",[a("code",[t._v("null")]),t._v(" no content response")])]),t._v(" "),a("p",[t._v("If "),a("code",[t._v("response.status")]),t._v(" has not been set, Strapi will automatically set the status to "),a("code",[t._v("200")]),t._v(" or "),a("code",[t._v("204")]),t._v(".")]),t._v(" "),a("h4",{attrs:{id:"string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#string","aria-hidden":"true"}},[t._v("#")]),t._v(" String")]),t._v(" "),a("p",[t._v("The Content-Type is defaulted to text/html or text/plain, both with\na default charset of utf-8. The Content-Length field is also set.")]),t._v(" "),a("h4",{attrs:{id:"buffer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#buffer","aria-hidden":"true"}},[t._v("#")]),t._v(" Buffer")]),t._v(" "),a("p",[t._v("The Content-Type is defaulted to application/octet-stream, and Content-Length\nis also set.")]),t._v(" "),a("h4",{attrs:{id:"stream"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stream","aria-hidden":"true"}},[t._v("#")]),t._v(" Stream")]),t._v(" "),a("p",[t._v("The Content-Type is defaulted to application/octet-stream.")]),t._v(" "),a("h4",{attrs:{id:"object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#object","aria-hidden":"true"}},[t._v("#")]),t._v(" Object")]),t._v(" "),a("p",[t._v("The Content-Type is defaulted to application/json.")]),t._v(" "),a("h3",{attrs:{id:"response-get-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-get-field","aria-hidden":"true"}},[t._v("#")]),t._v(" response.get(field)")]),t._v(" "),a("p",[t._v("Get a response header field value with case-insensitive "),a("code",[t._v("field")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" etag "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("get")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'ETag'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-set-field-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-set-field-value","aria-hidden":"true"}},[t._v("#")]),t._v(" response.set(field, value)")]),t._v(" "),a("p",[t._v("Set response header "),a("code",[t._v("field")]),t._v(" to "),a("code",[t._v("value")]),t._v(":")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("set")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'Cache-Control'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'no-cache'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-append-field-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-append-field-value","aria-hidden":"true"}},[t._v("#")]),t._v(" response.append(field, value)")]),t._v(" "),a("p",[t._v("Append additional header "),a("code",[t._v("field")]),t._v(" with value "),a("code",[t._v("val")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("append")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'Link'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("''")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-set-fields"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-set-fields","aria-hidden":"true"}},[t._v("#")]),t._v(" response.set(fields)")]),t._v(" "),a("p",[t._v("Set several response header "),a("code",[t._v("fields")]),t._v(" with an object:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("set")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v("'Etag'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'1234'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v("'Last-Modified'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" date\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-remove-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-remove-field","aria-hidden":"true"}},[t._v("#")]),t._v(" response.remove(field)")]),t._v(" "),a("p",[t._v("Remove header "),a("code",[t._v("field")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"response-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-type","aria-hidden":"true"}},[t._v("#")]),t._v(" response.type")]),t._v(" "),a("p",[t._v("Get response "),a("code",[t._v("Content-Type")]),t._v(' void of parameters such as "charset".')]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" ct "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("type"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token comment"}},[t._v('// => "image/png"')]),t._v("\n")])])]),a("h3",{attrs:{id:"response-type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-type-2","aria-hidden":"true"}},[t._v("#")]),t._v(" response.type=")]),t._v(" "),a("p",[t._v("Set response "),a("code",[t._v("Content-Type")]),t._v(" via mime string or file extension.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("type "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'text/plain; charset=utf-8'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("type "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'image/png'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("type "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'.png'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("type "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'png'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("Note: when appropriate a "),a("code",[t._v("charset")]),t._v(" is selected for you, for\nexample "),a("code",[t._v("response.type = 'html'")]),t._v(' will default to "utf-8", however\nwhen explicitly defined in full as '),a("code",[t._v("response.type = 'text/html'")]),t._v("\nno charset is assigned.")]),t._v(" "),a("h3",{attrs:{id:"response-is-types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-is-types","aria-hidden":"true"}},[t._v("#")]),t._v(" response.is(types...)")]),t._v(" "),a("p",[t._v("Very similar to "),a("code",[t._v("this.request.is()")]),t._v(".\nCheck whether the response type is one of the supplied types.\nThis is particularly useful for creating middleware that\nmanipulate responses.")]),t._v(" "),a("p",[t._v("For example, this is a middleware that minifies\nall HTML responses except for streams.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" minify "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token function"}},[t._v("require")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html-minifier'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nstrapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("app"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("use")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("*")]),a("span",{attrs:{class:"token function"}},[t._v("minifyHTML")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("next"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token operator"}},[t._v("!")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("response"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("is")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("return")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token operator"}},[t._v("!")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("||")]),t._v(" body"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("pipe"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("return")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Buffer"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("isBuffer")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("body"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" body"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("toString")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token function"}},[t._v("minify")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("body"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-redirect-url-alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-redirect-url-alt","aria-hidden":"true"}},[t._v("#")]),t._v(" response.redirect(url, [alt])")]),t._v(" "),a("p",[t._v("Perform a [302] redirect to "),a("code",[t._v("url")]),t._v(".")]),t._v(" "),a("p",[t._v('The string "back" is special-cased\nto provide Referrer support, when Referrer\nis not present '),a("code",[t._v("alt")]),t._v(' or "/" is used.')]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("redirect")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'back'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("redirect")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'back'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'/index.html'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("redirect")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'/login'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("redirect")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'http://google.com'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("To alter the default status of "),a("code",[t._v("302")]),t._v(", simply assign the status\nbefore or after this call. To alter the body, assign it after this call:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("status "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("301")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("redirect")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'/cart'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'Redirecting to shopping cart'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-attachment-filename"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-attachment-filename","aria-hidden":"true"}},[t._v("#")]),t._v(" response.attachment([filename])")]),t._v(" "),a("p",[t._v("Set "),a("code",[t._v("Content-Disposition")]),t._v(' to "attachment" to signal the client\nto prompt for download. Optionally specify the '),a("code",[t._v("filename")]),t._v(" of the\ndownload.")]),t._v(" "),a("h3",{attrs:{id:"response-headersent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-headersent","aria-hidden":"true"}},[t._v("#")]),t._v(" response.headerSent")]),t._v(" "),a("p",[t._v("Check if a response header has already been sent. Useful for seeing\nif the client may be notified on error.")]),t._v(" "),a("h3",{attrs:{id:"response-lastmodified"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-lastmodified","aria-hidden":"true"}},[t._v("#")]),t._v(" response.lastModified")]),t._v(" "),a("p",[t._v("Return the "),a("code",[t._v("Last-Modified")]),t._v(" header as a "),a("code",[t._v("Date")]),t._v(", if it exists.")]),t._v(" "),a("h3",{attrs:{id:"response-lastmodified-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-lastmodified-2","aria-hidden":"true"}},[t._v("#")]),t._v(" response.lastModified=")]),t._v(" "),a("p",[t._v("Set the "),a("code",[t._v("Last-Modified")]),t._v(" header as an appropriate UTC string.\nYou can either set it as a "),a("code",[t._v("Date")]),t._v(" or date string.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("response"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("lastModified "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{attrs:{class:"token class-name"}},[t._v("Date")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-etag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-etag","aria-hidden":"true"}},[t._v("#")]),t._v(" response.etag=")]),t._v(" "),a("p",[t._v("Set the ETag of a response including the wrapped "),a("code",[t._v('"')]),t._v("s.\nNote that there is no corresponding "),a("code",[t._v("response.etag")]),t._v(" getter.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("response"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("etag "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" crypto"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("createHash")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'md5'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("update")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("digest")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'hex'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h3",{attrs:{id:"response-vary-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-vary-field","aria-hidden":"true"}},[t._v("#")]),t._v(" response.vary(field)")]),t._v(" "),a("p",[t._v("Vary on "),a("code",[t._v("field")]),t._v(".")])])}],!1,null,null,null);n.options.__file="response.md";s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/2.08038ddb.js b/docs/.vuepress/dist/assets/js/2.08038ddb.js new file mode 100644 index 0000000000..39eba92a07 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/2.08038ddb.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{159:function(t,e,n){},161:function(t,e,n){"use strict";var a=n(159);n.n(a).a},209:function(t,e,n){"use strict";n.r(e);var a={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,a=e.slots;return t("span",{class:["badge",n.type,n.vertical]},n.text||a().default)}},i=(n(161),n(0)),o=Object(i.a)(a,void 0,void 0,!1,null,"099ab69c",null);o.options.__file="Badge.vue";e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/20.856d7bdd.js b/docs/.vuepress/dist/assets/js/20.856d7bdd.js new file mode 100644 index 0000000000..c22013c044 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/20.856d7bdd.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{240:function(t,s,a){"use strict";a.r(s);var n=a(0),o=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"router"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#router","aria-hidden":"true"}},[t._v("#")]),t._v(" Router")]),t._v(" "),a("p",[t._v("The most basic feature of any web application is the ability to interpret a request sent to a URL,\nthen send back a response. In order to do this, your application has to be able to distinguish one URL\nfrom another.")]),t._v(" "),a("p",[t._v("Like most web frameworks, Strapi provides a router: a mechanism for mapping URLs to controllers.\nRoutes are rules that tell Strapi what to do when faced with an incoming request.")]),t._v(" "),a("p",[t._v("Routes can be found in "),a("code",[t._v("./api//config/routes.json")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"route-format"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#route-format","aria-hidden":"true"}},[t._v("#")]),t._v(" Route format")]),t._v(" "),a("p",[t._v("Each route consists of an address (as a key) and a target (as an object value).\nThe address is a URL path and a specific HTTP method. The target is defined by an object with a\n"),a("code",[t._v("controller")]),t._v(" and an "),a("code",[t._v("action")]),t._v(". When the router receives an incoming request, it checks the address\nof all routes for matches. If a matching route is found, the request is then passed to its target.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"routes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"VERB /endpoint/:param"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"controller"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"controllerName"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"action"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"actionName"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("For example to manage your "),a("code",[t._v("Post")]),t._v(" records with a CRUD, your route should look like this:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"routes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"GET /post"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"controller"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Post"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"action"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"find"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"GET /post/:id"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"controller"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Post"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"action"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"findOne"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"POST /post"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"controller"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Post"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"action"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"create"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"PUT /post/:id"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"controller"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Post"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"action"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"update"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"DELETE /post/:id"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"controller"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Post"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"action"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"delete"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"route-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#route-parameters","aria-hidden":"true"}},[t._v("#")]),t._v(" Route parameters")]),t._v(" "),a("p",[t._v("Route paths will be translated to regular expressions used to match requests.\nQuery strings will not be considered when matching requests.")]),t._v(" "),a("p",[t._v("Route parameters are captured and added to "),a("code",[t._v("ctx.params")]),t._v(" or "),a("code",[t._v("ctx.request.body")]),t._v(".")]),t._v(" "),a("p",[t._v("By taking the previous example, your "),a("code",[t._v("Post")]),t._v(" controller should look like this:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("module"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("exports "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// GET request")]),t._v("\n find"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("*")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("try")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" Post"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("find")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("params"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token class-name"}},[t._v("error")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" error"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n findOne"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("*")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("try")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" Post"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("findOne")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("params"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token class-name"}},[t._v("error")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" error"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// POST request")]),t._v("\n create"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("*")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("try")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" Post"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("create")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("request"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token class-name"}},[t._v("error")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" error"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// PUT request")]),t._v("\n update"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("*")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("try")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" Post"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("update")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("params"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("request"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token class-name"}},[t._v("error")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" error"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// DELETE request")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("delete")]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("*")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("try")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" Post"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("destroy")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("params"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token class-name"}},[t._v("error")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("body "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" error"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n\n")])])]),a("h2",{attrs:{id:"router-prefix"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#router-prefix","aria-hidden":"true"}},[t._v("#")]),t._v(" Router prefix")]),t._v(" "),a("p",[t._v("Keep in mind routes can automatically be prefixed in "),a("code",[t._v("./config/general.json")]),t._v(" with the "),a("code",[t._v("prefix")]),t._v(" key.\nLet an empty string if you don't want to prefix your API. The prefix must starts with a "),a("code",[t._v("/")]),t._v(", e.g. "),a("code",[t._v("/api")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"policies-and-route-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#policies-and-route-process","aria-hidden":"true"}},[t._v("#")]),t._v(" Policies and route process")]),t._v(" "),a("p",[t._v("Just because a request matches a route address doesn't necessarily mean it will be passed to that\nroute's target directly. The request will need to pass through any configured policies first.\nPolicies are versatile tools for authorization and access control. They let you allow or deny\naccess to your controllers down to a fine level of granularity.")]),t._v(" "),a("p",[t._v("Policies are defined in the "),a("code",[t._v("policies")]),t._v(" directory of every of your APIs.")]),t._v(" "),a("p",[t._v("Each policy file should contain a single function. When it comes down to it, policies are\nreally just functions which run before your controllers. You can chain as many of them\ntogether as you like. In fact they're designed to be used this way. Ideally, each middleware\nfunction should really check just one thing.")]),t._v(" "),a("p",[t._v("For example to access "),a("code",[t._v("DELETE /post/:id")]),t._v(", the request will go through the "),a("code",[t._v("isAdmin")]),t._v(" policy first.\nIf the policy allows the request, then the "),a("code",[t._v("delete")]),t._v(" action from the "),a("code",[t._v("Post")]),t._v(" controller is executed.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"routes"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"DELETE /post/:id"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"controller"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Post"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"action"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"delete"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"policies"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token string"}},[t._v('"isAdmin"')]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Do not forget to yield "),a("code",[t._v("next")]),t._v(" when you need to move on.")])])}],!1,null,null,null);o.options.__file="router.md";s.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/21.6f851286.js b/docs/.vuepress/dist/assets/js/21.6f851286.js new file mode 100644 index 0000000000..4b10715fd1 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/21.6f851286.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{218:function(t,s,n){"use strict";n.r(s);var a=n(0),o=Object(a.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"content"},[n("h1",{attrs:{id:"services"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#services","aria-hidden":"true"}},[t._v("#")]),t._v(" Services")]),t._v(" "),n("p",[t._v("Services can be thought of as libraries which contain functions that you might want to use\nin many places of your application. For example, you might have an "),n("code",[t._v("Email")]),t._v(" service which\nwraps some default email message boilerplate code that you would want to use in many parts\nof your application.")]),t._v(" "),n("p",[t._v("Simply create a JavaScript file containing a function or an object into your\n"),n("code",[t._v("./api//services")]),t._v(" directory.")]),t._v(" "),n("p",[t._v("For example, you could have an "),n("code",[t._v("Email service")]),t._v(" like this:")]),t._v(" "),n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" nodemailer "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{attrs:{class:"token function"}},[t._v("require")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'nodemailer'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nmodule"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("exports "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n sendEmail"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token keyword"}},[t._v("from")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" to"),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" subject"),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" text"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),n("span",{attrs:{class:"token comment"}},[t._v("// Create reusable transporter object using SMTP transport")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" transporter "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" nodemailer"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("createTransport")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n service"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v("'Gmail'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n auth"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n user"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v("'gmail.user@gmail.com'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n pass"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v("'userpass'")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),n("span",{attrs:{class:"token comment"}},[t._v("// Setup e-mail data")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" options "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("from")]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("from")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n to"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" to"),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n subject"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" subject"),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n text"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" text\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),n("span",{attrs:{class:"token comment"}},[t._v("// Send mail")]),t._v("\n transporter"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("sendMail")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("options"),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("function")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" info"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("log")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),n("span",{attrs:{class:"token boolean"}},[t._v("false")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n console"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("log")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'Message sent: '")]),t._v(" "),n("span",{attrs:{class:"token operator"}},[t._v("+")]),t._v(" info"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("response"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}],!1,null,null,null);o.options.__file="services.md";s.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/22.7ddb4e1d.js b/docs/.vuepress/dist/assets/js/22.7ddb4e1d.js new file mode 100644 index 0000000000..b5f476ef82 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/22.7ddb4e1d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{217:function(s,t,a){"use strict";a.r(t);var n=a(0),o=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"sessions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sessions","aria-hidden":"true"}},[s._v("#")]),s._v(" Sessions")]),s._v(" "),a("p",[s._v("Since HTTP driven applications are stateless, sessions provide a way to store information\nabout the user across requests.")]),s._v(" "),a("p",[s._v('Strapi provides "guest" sessions, meaning any visitor will have a session,\nauthenticated or not. If a session is new a '),a("code",[s._v("Set-Cookie")]),s._v(" will be produced regardless\nof populating the session.")]),s._v(" "),a("p",[s._v("Strapi only supports cookie sessions, for now.")]),s._v(" "),a("p",[s._v("The current session is available in "),a("code",[s._v("this.session")]),s._v(" inside a controller action.")]),s._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("module"),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("exports "),a("span",{attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n find"),a("span",{attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{attrs:{class:"token keyword"}},[s._v("function")]),s._v(" "),a("span",{attrs:{class:"token operator"}},[s._v("*")]),a("span",{attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n "),a("span",{attrs:{class:"token comment"}},[s._v("// Limit request rate to 100")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("session"),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("views "),a("span",{attrs:{class:"token operator"}},[s._v("<")]),s._v(" "),a("span",{attrs:{class:"token number"}},[s._v("100")]),a("span",{attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("try")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("session"),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("views"),a("span",{attrs:{class:"token operator"}},[s._v("++")]),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("body "),a("span",{attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{attrs:{class:"token keyword"}},[s._v("yield")]),s._v(" Post"),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{attrs:{class:"token function"}},[s._v("find")]),a("span",{attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("params"),a("span",{attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),a("span",{attrs:{class:"token keyword"}},[s._v("catch")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{attrs:{class:"token class-name"}},[s._v("error")]),a("span",{attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("body "),a("span",{attrs:{class:"token operator"}},[s._v("=")]),s._v(" error"),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),a("span",{attrs:{class:"token keyword"}},[s._v("else")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("body "),a("span",{attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{attrs:{class:"token string"}},[s._v("'You have reached your request rate limit'")]),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" \n")])])]),a("p",[s._v("To destroy an active session, simply set it to "),a("code",[s._v("null")]),s._v(":")]),s._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("module"),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("exports "),a("span",{attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n logout"),a("span",{attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{attrs:{class:"token keyword"}},[s._v("function")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("try")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("session "),a("span",{attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{attrs:{class:"token keyword"}},[s._v("null")]),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{attrs:{class:"token function"}},[s._v("redirect")]),a("span",{attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{attrs:{class:"token string"}},[s._v("'./'")]),a("span",{attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),a("span",{attrs:{class:"token keyword"}},[s._v("catch")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{attrs:{class:"token class-name"}},[s._v("error")]),a("span",{attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{attrs:{class:"token keyword"}},[s._v("this")]),a("span",{attrs:{class:"token punctuation"}},[s._v(".")]),s._v("body "),a("span",{attrs:{class:"token operator"}},[s._v("=")]),s._v(" error"),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" \n")])])])])}],!1,null,null,null);o.options.__file="sessions.md";t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/23.15e5a0c3.js b/docs/.vuepress/dist/assets/js/23.15e5a0c3.js new file mode 100644 index 0000000000..7b46d9df82 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/23.15e5a0c3.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{216:function(t,s,n){"use strict";n.r(s);var a=n(0),e=Object(a.a)({},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"content"},[t._m(0),t._v(" "),n("p",[t._v("Strapi's test suite is written using "),n("a",{attrs:{href:"https://mochajs.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("mocha"),n("OutboundLink")],1),t._v(" and although\nStrapi doesn't impose any testing framework for your apps, in this example we\nwill setup tests using the mocha framework.")]),t._v(" "),t._m(1),t._v(" "),n("p",[t._v("Before writing tests, you should setup a basic directory structure, like this:")]),t._v(" "),t._m(2),t._m(3),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),t._m(6),t._m(7),t._v(" "),n("p",[t._v("Once you have setup your directory structure, you can start writing your tests.\nIn this example we use "),n("a",{attrs:{href:"https://github.com/avbel/co-supertest",target:"_blank",rel:"noopener noreferrer"}},[t._v("co-supertest"),n("OutboundLink")],1),t._v(",\na "),n("code",[t._v("co")]),t._v(" and "),n("code",[t._v("Supertest")]),t._v(" integration library.\n"),n("a",{attrs:{href:"https://github.com/visionmedia/supertest",target:"_blank",rel:"noopener noreferrer"}},[t._v("Supertest"),n("OutboundLink")],1),t._v(" provides several useful\nmethods for testing HTTP requests."),n("br"),t._v("\nIf you want to test an api endpoint, you can do it like this:")]),t._v(" "),t._m(8),t._v(" "),t._m(9),t._m(10),t._v(" "),t._m(11),t._v(" "),t._m(12),t._v(" "),t._m(13),t._m(14)])},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"testing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#testing","aria-hidden":"true"}},[this._v("#")]),this._v(" Testing")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"setup"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setup","aria-hidden":"true"}},[this._v("#")]),this._v(" Setup")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[this._v("./strapiApp\n├── api/\n├── ...\n├── test/\n│ ├── integration/\n│ │ ├── controllers/\n│ │ │ └── my_endpoint.test.js\n│ │ ├── models/\n│ │ │ └── my_model.test.js\n│ │ └── ...\n| ├── ...\n│ ├── bootstrap.js\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"boostrap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#boostrap","aria-hidden":"true"}},[this._v("#")]),this._v(" Boostrap")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("p",[t._v("We are going to setup a "),n("code",[t._v("bootstrap.js")]),t._v(" with "),n("code",[t._v("before")]),t._v(" and "),n("code",[t._v("after")]),t._v(" hooks to\nperform any actions before and after our tests."),n("br"),t._v("\nIn this example, the app server is started before running any tests an stop\nthe server after tests are completed.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("em",[this._v("./test/bootstrap.js")])])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" strapi "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{attrs:{class:"token function"}},[t._v("require")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'strapi'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),n("span",{attrs:{class:"token function"}},[t._v("before")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("done"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n strapi"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("start")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("function")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),n("span",{attrs:{class:"token function"}},[t._v("done")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),n("span",{attrs:{class:"token function"}},[t._v("done")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" strapi"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),n("span",{attrs:{class:"token function"}},[t._v("after")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("done"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n strapi"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("stop")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token function"}},[t._v("done")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"writing-tests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#writing-tests","aria-hidden":"true"}},[this._v("#")]),this._v(" Writing tests")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("em",[this._v("./test/integration/controllers/my_endpoint.js")])])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" request "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{attrs:{class:"token function"}},[t._v("require")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'co-supertest'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),n("span",{attrs:{class:"token function"}},[t._v("describe")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'MyEndpoint Controller Integration'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("function")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token function"}},[t._v("describe")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'GET /my_endpoint'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("function")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token function"}},[t._v("it")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'should return 200 status code'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),n("span",{attrs:{class:"token operator"}},[t._v("*")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" "),n("span",{attrs:{class:"token function"}},[t._v("request")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("strapi"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("config"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("url"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token keyword"}},[t._v("get")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'/my_endpoint'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("expect")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token number"}},[t._v("200")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("expect")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'Content-Type'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),n("span",{attrs:{class:"token regex"}},[t._v("/json/")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("end")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"running-tests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#running-tests","aria-hidden":"true"}},[this._v("#")]),this._v(" Running tests")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("In order to run tests you can use "),s("code",[this._v("npm test")]),this._v(". In your "),s("code",[this._v("package.json")]),this._v(", in the\n"),s("code",[this._v("scripts")]),this._v(" section, add this:")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("em",[this._v("./package.json")])])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token string"}},[t._v('"scripts"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"test"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v('"mocha --require co-mocha test/bootstrap.js test/**/*.test.js"')]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Remember to run "),s("code",[this._v("test/bootstrap.js")]),this._v(" before any other tests and, if you want,\nuse the "),s("code",[this._v("--require")]),this._v(" option to pass any required dependencies you need available\nin your tests.")])}],!1,null,null,null);e.options.__file="testing.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/24.6fdf34d0.js b/docs/.vuepress/dist/assets/js/24.6fdf34d0.js new file mode 100644 index 0000000000..365ff551cd --- /dev/null +++ b/docs/.vuepress/dist/assets/js/24.6fdf34d0.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{215:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"upload"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upload","aria-hidden":"true"}},[t._v("#")]),t._v(" Upload")]),t._v(" "),a("p",[t._v("Strapi contains a set of tools to upload files.")]),t._v(" "),a("h2",{attrs:{id:"upload-config"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upload-config","aria-hidden":"true"}},[t._v("#")]),t._v(" Upload config")]),t._v(" "),a("p",[t._v("To change the upload config, edit the "),a("code",[t._v("./api/upload/config/settings.json")]),t._v(" file.")]),t._v(" "),a("p",[t._v("For the config bellow, please use refer to the "),a("code",[t._v("[co-busboy](https://github.com/cojs/busboy)")]),t._v(" node module documentation.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"upload"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"folder"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"public/upload"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"acceptedExtensions"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"*"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"headers"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"highWaterMark"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"fileHwm"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"defCharset"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"preservePath"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"limits"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"fieldNameSize"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"fieldSize"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"fields"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"fileSize"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"files"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"parts"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"headerPairs"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"upload-service"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upload-service","aria-hidden":"true"}},[t._v("#")]),t._v(" Upload service")]),t._v(" "),a("p",[t._v("The upload service allows you to easily upload files from anywhere in your application.")]),t._v(" "),a("p",[t._v("Usage as a promise (yieldable) :")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("api"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("upload"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("services"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("upload"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("upload")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("part"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"upload-api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upload-api","aria-hidden":"true"}},[t._v("#")]),t._v(" Upload API")]),t._v(" "),a("p",[t._v("The upload API is a simple API which can be used from your client\n(front-end, mobile...) application to upload files.")]),t._v(" "),a("p",[t._v("Route used to upload files:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("POST /upload\n")])])]),a("p",[t._v("To use this route, you have to submit a HTML form with "),a("code",[t._v("multipart/*")]),t._v(" enctype\n(or fake it if you are using a web front-end framework like AngularJS).")]),t._v(" "),a("p",[t._v("Response payload:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"readable"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"domain"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("null")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"truncated"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"fieldname"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"file"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"filename"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"1445421755771-image.jpg"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"encoding"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"7bit"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"transferEncoding"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"7bit"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"mime"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"image/jpeg"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"mimeType"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"image/jpeg"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"originalFilenameFormatted"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"image.jpg"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"originalFilename"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"image.jpg"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"template"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"default"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"lang"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"en"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"createdAt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"2015-10-21T10:02:35.776Z"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"updatedAt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"2015-10-21T10:02:35.776Z"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"id"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("2")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),a("h2",{attrs:{id:"upload-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upload-model","aria-hidden":"true"}},[t._v("#")]),t._v(" Upload model")]),t._v(" "),a("p",[t._v("Each uploaded file description is registered in the database. So you can retrieve\nthem whenever you want. However, you can disable this option by overriding the\nupload service logic.")])])}],!1,null,null,null);e.options.__file="upload.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/25.21c9a549.js b/docs/.vuepress/dist/assets/js/25.21c9a549.js new file mode 100644 index 0000000000..13cdcd7ed8 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/25.21c9a549.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{214:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),a("p",[t._v("Most of the web applications require a user management system: registration, login,\nreset password, etc.")]),t._v(" "),a("p",[t._v("To avoid you to reinvent the wheel, Strapi embedded a full featured user management\nsystem powered by "),a("a",{attrs:{href:"https://github.com/simov/grant",target:"_blank",rel:"noopener noreferrer"}},[t._v("Grant"),a("OutboundLink")],1),t._v(" and JSON Web Token (JWT).")]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),a("p",[t._v("Request payload:")]),t._v(" "),t._m(3),a("p",[t._v("Response payload:")]),t._v(" "),t._m(4),t._m(5),t._v(" "),t._m(6),t._v(" "),a("p",[t._v("Request payload:")]),t._v(" "),t._m(7),a("p",[t._v("Response payload:")]),t._v(" "),t._m(8),t._m(9),t._v(" "),t._m(10),t._v(" "),t._m(11),t._v(" "),t._m(12),t._v(" "),a("p",[t._v("Thanks to "),a("a",{attrs:{href:"https://github.com/simov/grant",target:"_blank",rel:"noopener noreferrer"}},[t._v("Grant"),a("OutboundLink")],1),t._v(" and "),a("a",{attrs:{href:"https://github.com/simov/purest",target:"_blank",rel:"noopener noreferrer"}},[t._v("Purest"),a("OutboundLink")],1),t._v(", you can easily use OAuth and OAuth2\nproviders to enable authentication in your application. By default,\nStrapi comes with four providers:")]),t._v(" "),t._m(13),t._v(" "),t._m(14),t._v(" "),t._m(15),t._v(" "),t._m(16),t._v(" "),a("p",[t._v("Response payload:")]),t._v(" "),t._m(17),t._m(18),t._v(" "),a("p",[t._v("Strapi comes with 5 providers. If you want to add another one, it can be easily done thanks to "),a("a",{attrs:{href:"https://github.com/simov/purest",target:"_blank",rel:"noopener noreferrer"}},[t._v("Purest"),a("OutboundLink")],1),t._v(", by adding it in the Grant service.")]),t._v(" "),t._m(19),t._v(" "),t._m(20),t._v(" "),a("p",[t._v("Request payload:")]),t._v(" "),t._m(21),t._m(22),t._v(" "),t._m(23),t._v(" "),a("p",[t._v("Request payload:")]),t._v(" "),t._m(24),a("p",[t._v("Response payload:")]),t._v(" "),t._m(25),t._m(26),t._v(" "),t._m(27)])},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"users"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#users","aria-hidden":"true"}},[this._v("#")]),this._v(" Users")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"local-registration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#local-registration","aria-hidden":"true"}},[this._v("#")]),this._v(" Local Registration")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Route used to register a user to your application: "),s("code",[this._v("POST /auth/local/register")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"username"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"John DOE"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"email"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"contact@company.com"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"password"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"123456"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"user"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"jwt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"local-login"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#local-login","aria-hidden":"true"}},[this._v("#")]),this._v(" Local Login")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Route used to login a user to your application: "),s("code",[this._v("POST /auth/local")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"identifier"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"contact@company.com"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"password"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"123456"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"user"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"jwt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"authentication"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#authentication","aria-hidden":"true"}},[this._v("#")]),this._v(" Authentication")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("JWT does not use session. Once you get the token, it has to be stored in front (for\nexample in the "),s("code",[this._v("localstorage")]),this._v("), and sent within each request. The token can be sent:")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ul",[a("li",[t._v("in the header ("),a("code",[t._v("Bearer")]),t._v(")")]),t._v(" "),a("li",[t._v("in the body ("),a("code",[t._v("token")]),t._v(" field)")]),t._v(" "),a("li",[t._v("in the querystring ("),a("code",[t._v("token")]),t._v(" field)")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"providers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#providers","aria-hidden":"true"}},[this._v("#")]),this._v(" Providers")])},function(){var t=this.$createElement,s=this._self._c||t;return s("ul",[s("li",[this._v("Facebook")]),this._v(" "),s("li",[this._v("Google")]),this._v(" "),s("li",[this._v("Github")]),this._v(" "),s("li",[this._v("Linkedin2 (Oauth2 Provider for Linkedin)")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("To use the providers authentication, set your credentials in\n"),s("code",[this._v("./api/user/config/environments/development/grant.json")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Redirect your user to: "),s("code",[this._v("GET /connect/:provider")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("After his approval, he will be redirected to "),s("code",[this._v("/auth/:provider/callback")]),this._v(". The jwt and user will be available in the querystring.")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"user"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"jwt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"custom-providers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#custom-providers","aria-hidden":"true"}},[this._v("#")]),this._v(" Custom providers")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"forgot-password"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#forgot-password","aria-hidden":"true"}},[this._v("#")]),this._v(" Forgot password")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Send an email to the user with an activation code: "),s("code",[this._v("POST /auth/forgot-password")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"email"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"contact@company.com"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"change-password"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#change-password","aria-hidden":"true"}},[this._v("#")]),this._v(" Change password")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v('Route used to update the password of a user after he asked for a\n"forgot-password" email: '),s("code",[this._v("POST /auth/change-password")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"code"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"password"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"123456"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"passwordConfirmation"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"123456"')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"user"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"jwt"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"accessing-user-from-requests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#accessing-user-from-requests","aria-hidden":"true"}},[this._v("#")]),this._v(" Accessing user from requests.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("If you want to access attributes of the logged in user, you can use "),s("code",[this._v("this.user")]),this._v(" inside of your controller action.")])}],!1,null,null,null);e.options.__file="users.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/26.6608295c.js b/docs/.vuepress/dist/assets/js/26.6608295c.js new file mode 100644 index 0000000000..3e8011f154 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/26.6608295c.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{213:function(t,s,n){"use strict";n.r(s);var e=n(0),a=Object(e.a)({},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"content"},[t._m(0),t._v(" "),n("p",[t._v("In Strapi, views are markup templates that are compiled on the server into HTML pages.\nIn most cases, views are used as the response to an incoming HTTP request.")]),t._v(" "),n("p",[t._v("By default, Strapi doesn't use views. The philosophy of the framework is to\nseparate the reusable backend application logic from the frontend.")]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),t._m(3),t._m(4),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),n("p",[t._v("You don't need to specify the view extension if you use the default one sets in config.")]),t._v(" "),t._m(7),t._v(" "),t._m(8),t._m(9),t._m(10),t._v(" "),t._m(11),t._m(12),t._v(" "),t._m(13),t._v(" "),t._m(14),n("p",[t._v("Strapi supports all of those view engines:")]),t._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"https://github.com/soywiz/atpl.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("atpl"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/olado/doT",target:"_blank",rel:"noopener noreferrer"}},[t._v("doT.js"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/akdubya/dustjs",target:"_blank",rel:"noopener noreferrer"}},[t._v("dust (unmaintained)"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/linkedin/dustjs",target:"_blank",rel:"noopener noreferrer"}},[t._v("dustjs-linkedin (maintained fork of dust)"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/sstephenson/eco",target:"_blank",rel:"noopener noreferrer"}},[t._v("eco"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/baryshev/ect",target:"_blank",rel:"noopener noreferrer"}},[t._v("ect"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/visionmedia/ejs",target:"_blank",rel:"noopener noreferrer"}},[t._v("ejs"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/visionmedia/haml.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("haml"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/9elements/haml-coffee",target:"_blank",rel:"noopener noreferrer"}},[t._v("haml-coffee"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/gregwebs/hamlet.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("hamlet"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/wycats/handlebars.js/",target:"_blank",rel:"noopener noreferrer"}},[t._v("handlebars"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/twitter/hogan.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("hogan"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/codemix/htmling",target:"_blank",rel:"noopener noreferrer"}},[t._v("htmling"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/visionmedia/jade",target:"_blank",rel:"noopener noreferrer"}},[t._v("jade"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/shinetech/jazz",target:"_blank",rel:"noopener noreferrer"}},[t._v("jazz"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/kof/node-jqtpl",target:"_blank",rel:"noopener noreferrer"}},[t._v("jqtpl"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/baryshev/just",target:"_blank",rel:"noopener noreferrer"}},[t._v("JUST"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/chjj/liquor",target:"_blank",rel:"noopener noreferrer"}},[t._v("liquor"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/bestiejs/lodash",target:"_blank",rel:"noopener noreferrer"}},[t._v("lodash"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/satchmorun/mote",target:"_blank",rel:"noopener noreferrer"}},[t._v("mote"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/janl/mustache.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("mustache"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/mozilla/nunjucks",target:"_blank",rel:"noopener noreferrer"}},[t._v("nunjucks"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/jepso/QEJS",target:"_blank",rel:"noopener noreferrer"}},[t._v("QEJS"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/Rich-Harris/Ractive",target:"_blank",rel:"noopener noreferrer"}},[t._v("ractive"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/facebook/react",target:"_blank",rel:"noopener noreferrer"}},[t._v("react"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/paularmstrong/swig",target:"_blank",rel:"noopener noreferrer"}},[t._v("swig"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"http://archan937.github.com/templayed.js/",target:"_blank",rel:"noopener noreferrer"}},[t._v("templayed"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/leizongmin/tinyliquid",target:"_blank",rel:"noopener noreferrer"}},[t._v("liquid"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/malgorithms/toffee",target:"_blank",rel:"noopener noreferrer"}},[t._v("toffee"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/documentcloud/underscore",target:"_blank",rel:"noopener noreferrer"}},[t._v("underscore"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/jeremyruppel/walrus",target:"_blank",rel:"noopener noreferrer"}},[t._v("walrus"),n("OutboundLink")],1)]),t._v(" "),n("li",[n("a",{attrs:{href:"https://github.com/gsf/whiskers.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("whiskers"),n("OutboundLink")],1)])])])},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"views"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#views","aria-hidden":"true"}},[this._v("#")]),this._v(" Views")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("If you want to activate views, set the "),s("code",[this._v("views")]),this._v(" in "),s("code",[this._v("./config/general.json")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("For example, if you want to use "),s("code",[this._v("lodash")]),this._v(" for "),s("code",[this._v(".html")]),this._v(" files and use it by default,\nyou may set up your "),s("code",[this._v("views")]),this._v(" object as below:")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"views"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"map"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"html"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v('"lodash"')]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"default"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v('"html"')]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Views are defined in your application's "),s("code",[this._v("./views")]),this._v(" directory.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"render-a-view"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#render-a-view","aria-hidden":"true"}},[this._v("#")]),this._v(" Render a view")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Simply use "),s("code",[this._v("this.render")]),this._v(" instead of "),s("code",[this._v("this.body")]),this._v(" to render a view.")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("p",[t._v("Using the config we wrote above with "),n("code",[t._v("lodash")]),t._v(" for "),n("code",[t._v(".html")]),t._v(" files and use the "),n("code",[t._v("html")]),t._v("\nextension by default, this example will render "),n("code",[t._v("./views/user.html")]),t._v(" with\nLodash as template engine.")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("this")]),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("render")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'user'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n firstname"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v("'John'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n lastname"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v("'Doe'")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-html extra-class"},[n("pre",{pre:!0,attrs:{class:"language-html"}},[n("code",[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("html")]),n("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("head")]),n("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("..."),n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("body")]),n("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("p")]),n("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("Firstname: <% firstname %>"),n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("br")]),n("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("Lastname: <% lastname %>"),n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n"),n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token tag"}},[n("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Here is the same example with the "),s("code",[this._v("jade")]),this._v(" extension, not used by default:")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token keyword"}},[t._v("yield")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("this")]),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("render")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'user.jade'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n firstname"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v("'John'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n lastname"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v("'Doe'")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"supported-template-engines"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#supported-template-engines","aria-hidden":"true"}},[this._v("#")]),this._v(" Supported template engines")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("p",[t._v("To use a view engine, you should use npm to install it in your project and\nset the "),n("code",[t._v("map")]),t._v(" object in "),n("code",[t._v("strapi.config.views")]),t._v(". For example, if you want to use\n"),n("code",[t._v("swig")]),t._v(" for "),n("code",[t._v(".html")]),t._v(" files and "),n("code",[t._v("hogan")]),t._v(" for "),n("code",[t._v(".md")]),t._v(" files, you may configure the\n"),n("code",[t._v("map")]),t._v(" object as below:")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"views"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"map"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"html"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v('"swig"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{attrs:{class:"token string"}},[t._v('"md"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v('"hogan"')]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])}],!1,null,null,null);a.options.__file="views.md";s.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/27.2c9596ea.js b/docs/.vuepress/dist/assets/js/27.2c9596ea.js new file mode 100644 index 0000000000..d686f06f04 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/27.2c9596ea.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{212:function(t,e,r){"use strict";r.r(e);var a=r(0),n=Object(a.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[r("div",{staticClass:"intro custom-block"},[t._m(0),t._v(" "),t._m(1),t._v(" "),r("p",[t._v("The most advanced open-source Content Management Framework to build powerful API with no effort.")]),t._v(" "),r("p",{staticClass:"flex justify-around"},[r("a",{attrs:{href:"https://www.npmjs.org/package/strapi",target:"_blank",rel:"noopener noreferrer"}},[r("img",{attrs:{src:"https://img.shields.io/npm/v/strapi.svg",alt:"npm version"}}),r("OutboundLink")],1),t._v(" "),r("a",{attrs:{href:"https://www.npmjs.org/package/strapi",target:"_blank",rel:"noopener noreferrer"}},[r("img",{attrs:{src:"https://img.shields.io/npm/dm/strapi.svg",alt:"npm downloads"}}),r("OutboundLink")],1),t._v(" "),r("a",{attrs:{href:"https://travis-ci.org/strapi/strapi",target:"_blank",rel:"noopener noreferrer"}},[r("img",{attrs:{src:"https://travis-ci.org/strapi/strapi.svg?branch=master",alt:"Build status"}}),r("OutboundLink")],1),t._v(" "),r("a",{attrs:{href:"http://slack.strapi.io",target:"_blank",rel:"noopener noreferrer"}},[r("img",{attrs:{src:"http://strapi-slack.herokuapp.com/badge.svg",alt:"Slack status"}}),r("OutboundLink")],1),t._v(" "),r("a",{attrs:{href:"https://heroku.com/deploy?template=https://github.com/strapi/strapi-heroku-app",target:"_blank",rel:"noopener noreferrer"}},[r("img",{attrs:{src:"https://www.herokucdn.com/deploy/button.svg",alt:"Heroku Deploy",height:"20"}}),r("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),r("p",[t._v("We've been working on a major update for Strapi during the past months, rewriting the core framework and the dashboard.")]),t._v(" "),r("p",[t._v("This documentation is only related to Strapi v3@alpha.13 ("),r("a",{attrs:{href:"http://strapi.io/documentation/1.x.x",target:"_blank",rel:"noopener noreferrer"}},[t._v("v1 documentation is still available"),r("OutboundLink")],1),t._v(").")]),t._v(" "),r("p",[r("strong",[r("router-link",{attrs:{to:"./getting-started/installation.html"}},[t._v("Get Started")])],1),r("br"),t._v("\nLearn how to install Strapi and start developing your API.")]),t._v(" "),r("p",[r("strong",[r("router-link",{attrs:{to:"./cli/CLI.html"}},[t._v("Command Line Interface")])],1),r("br"),t._v("\nGet to know our CLI to make features the hacker way!")]),t._v(" "),r("p",[r("strong",[r("router-link",{attrs:{to:"./concepts/concepts.html"}},[t._v("Concepts")])],1),r("br"),t._v("\nGet to know more about Strapi and how it works.")]),t._v(" "),r("p",[r("strong",[r("router-link",{attrs:{to:"./configurations/configurations.html"}},[t._v("Guides")])],1),r("br"),t._v("\nGet familiar with Strapi. Discover concrete examples on how to develop the features you need.")]),t._v(" "),r("p",[r("strong",[r("router-link",{attrs:{to:"./plugin-development/quick-start.html"}},[t._v("Plugin Development")])],1),r("br"),t._v("\nUnderstand how to develop your own plugin.")]),t._v(" "),r("p",[r("strong",[r("router-link",{attrs:{to:"./api-reference/reference.html"}},[t._v("API Reference")])],1),r("br"),t._v("\nLearn about Strapi's API, the "),r("code",[t._v("strapi")]),t._v(" object that is available in your backend.")]),t._v(" "),r("p",[r("strong",[r("router-link",{attrs:{to:"./migration/migration-guide.html"}},[t._v("Migration guide")])],1),r("br")])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"https://cldup.com/7umchwdUBh.png",alt:"Logo"}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"api-creation-made-simple-secure-and-fast"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#api-creation-made-simple-secure-and-fast","aria-hidden":"true"}},[this._v("#")]),this._v(" API creation made simple, secure and fast.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"v3-alpha-13-is-available"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#v3-alpha-13-is-available","aria-hidden":"true"}},[this._v("#")]),this._v(" v3@alpha.13 is available!")])}],!1,null,null,null);n.options.__file="README.md";e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/28.9b077c15.js b/docs/.vuepress/dist/assets/js/28.9b077c15.js new file mode 100644 index 0000000000..32aa13c44d --- /dev/null +++ b/docs/.vuepress/dist/assets/js/28.9b077c15.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{211:function(t,e,r){"use strict";r.r(e);var i=r(0),s=Object(i.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"http://strapi.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Strapi Website"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/strapi/strapi",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub Repository"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/strapi/strapi/blob/master/CONTRIBUTING.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("Contributing Guide"),r("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"./getting-started/installation.html"}},[t._v("Installation")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./getting-started/quick-start.html"}},[t._v("Quick start")])],1)]),t._v(" "),t._m(3),t._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"./cli/CLI.html"}},[t._v("Command line interface")])],1)]),t._v(" "),t._m(4),t._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"./concepts/concepts.html"}},[t._v("Table of contents")])],1)]),t._v(" "),t._m(5),t._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"./guides/authentication.html"}},[t._v("Authentication")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./configurations/configurations.html"}},[t._v("Configurations")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/controllers.html"}},[t._v("Controllers")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/deployment.html"}},[t._v("Deployment")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/email.html"}},[t._v("Email")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/upload.html"}},[t._v("File Upload")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/filters.html"}},[t._v("Filters")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/graphql.html"}},[t._v("GraphQL")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/i18n.html"}},[t._v("Internationalization")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/models.html"}},[t._v("Models")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/policies.html"}},[t._v("Policies")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/public-assets.html"}},[t._v("Public Assets")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/requests.html"}},[t._v("Requests")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/responses.html"}},[t._v("Responses")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/routing.html"}},[t._v("Routing")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./guides/services.html"}},[t._v("Services")])],1)]),t._v(" "),t._m(6),t._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"./plugin-development/quick-start.html"}},[t._v("Quick start")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./plugin-development/plugin-architecture.html"}},[t._v("Plugin Folders and Files Architecture")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./plugin-development/backend-development.html"}},[t._v("Back-end Development")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./plugin-development/frontend-development.html"}},[t._v("Front-end Development")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./plugin-development/frontend-use-cases.html"}},[t._v("Front-end Use Cases")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./plugin-development/utils.html"}},[t._v("Front-end Helpers")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./plugin-development/ui-components.html"}},[t._v("Front-end UI Components")])],1)]),t._v(" "),t._m(7),t._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"./advanced/customize-admin.html"}},[t._v("Admin panel")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./advanced/logging.html"}},[t._v("Logging")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./advanced/hooks.html"}},[t._v("Hooks")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./advanced/middlewares.html"}},[t._v("Middlewares")])],1),t._v(" "),r("li",[r("router-link",{attrs:{to:"./advanced/usage-tracking.html"}},[t._v("Tracking usage")])],1)]),t._v(" "),t._m(8),t._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"./api-reference/reference.html"}},[t._v("Table of contents")])],1)]),t._v(" "),t._m(9),t._v(" "),r("ul",[r("li",[r("router-link",{attrs:{to:"./tutorials/"}},[t._v("Table of contents")])],1)]),t._v(" "),t._m(10),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/strapi/strapi/wiki",target:"_blank",rel:"noopener noreferrer"}},[t._v("Migration guides"),r("OutboundLink")],1)])])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"summary"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#summary","aria-hidden":"true"}},[this._v("#")]),this._v(" Summary")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"useful-links"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#useful-links","aria-hidden":"true"}},[this._v("#")]),this._v(" Useful links")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"getting-started"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started","aria-hidden":"true"}},[this._v("#")]),this._v(" Getting started")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"cli"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cli","aria-hidden":"true"}},[this._v("#")]),this._v(" CLI")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"concepts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#concepts","aria-hidden":"true"}},[this._v("#")]),this._v(" Concepts")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"guides"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#guides","aria-hidden":"true"}},[this._v("#")]),this._v(" Guides")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"plugin-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#plugin-development","aria-hidden":"true"}},[this._v("#")]),this._v(" Plugin Development")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"advanced-usage"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-usage","aria-hidden":"true"}},[this._v("#")]),this._v(" Advanced Usage")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"api-reference"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#api-reference","aria-hidden":"true"}},[this._v("#")]),this._v(" API Reference")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"tutorials"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tutorials","aria-hidden":"true"}},[this._v("#")]),this._v(" Tutorials")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"migration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#migration","aria-hidden":"true"}},[this._v("#")]),this._v(" Migration")])}],!1,null,null,null);s.options.__file="SUMMARY.md";e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/29.8ea8ecc1.js b/docs/.vuepress/dist/assets/js/29.8ea8ecc1.js new file mode 100644 index 0000000000..6accb642b4 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/29.8ea8ecc1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{210:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),a("p",[t._v("One of Strapi's main feature is its fully extendable and customizable admin panel. This section explains how the admin panel section is structured and how to customize it.")]),t._v(" "),a("p",[t._v("See the "),a("a",{attrs:{href:"https://github.com/strapi/strapi/blob/master/CONTRIBUTING.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("Contributing Guide"),a("OutboundLink")],1),t._v(" for informations on how to develop the Strapi's admin interface.")]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),t._m(3),a("hr"),t._v(" "),t._m(4),t._v(" "),a("p",[t._v("The administration panel can be customised according to your needs, so you can make it reflects your identity: colors, fonts, logo, etc.")]),t._v(" "),t._m(5),t._v(" "),a("p",[t._v("By default, the administration panel is exposed via "),a("a",{attrs:{href:"http://localhost:1337/admin",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://localhost:1337/admin"),a("OutboundLink")],1),t._v(". However, for security reasons, you can easily update this path.")]),t._v(" "),t._m(6),t._v(" "),t._m(7),a("p",[t._v("The panel will be available through "),a("a",{attrs:{href:"http://localhost:1337/dashboard",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://localhost:1337/dashboard"),a("OutboundLink")],1),t._v(" with the configurations above.")]),t._v(" "),t._m(8),t._v(" "),t._m(9),t._v(" "),t._m(10),t._v(" "),t._m(11),t._v(" "),t._m(12),t._v(" "),t._m(13),t._v(" "),t._m(14),t._v(" "),a("p",[t._v("You should be able to see the admin at "),a("a",{attrs:{href:"http://localhost:4000/admin",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://localhost:4000/admin"),a("OutboundLink")],1),t._v(".")]),t._v(" "),t._m(15),t._v(" "),t._m(16),t._v(" "),a("p",[t._v("Admin's styles use "),a("a",{attrs:{href:"https://github.com/postcss/postcss",target:"_blank",rel:"noopener noreferrer"}},[t._v("PostCSS"),a("OutboundLink")],1),t._v(", and more precisely "),a("a",{attrs:{href:"https://github.com/postcss/postcss-scss",target:"_blank",rel:"noopener noreferrer"}},[t._v("PostCSS-SCSS"),a("OutboundLink")],1),t._v(". In this way, colors are stored in variables. The values of these variables can be easily changed in files located in "),a("code",[t._v("./admin/admin/src/styles/variables/")]),t._v(".")]),t._v(" "),a("p",[t._v("The changes should be automatically visible.")]),t._v(" "),t._m(17),t._v(" "),a("p",[t._v("Fonts can also be overridden:")]),t._v(" "),t._m(18),t._v(" "),t._m(19),t._v(" "),t._m(20),t._v(" "),t._m(21),t._v(" "),a("hr"),t._v(" "),t._m(22),t._v(" "),a("p",[t._v("To build the administration, run the following command from the root directory of your project.")]),t._v(" "),t._m(23),t._m(24),t._v(" "),a("p",[t._v("After you have built the admininistration you can now create a new project to develop your API with the changes implemented.")]),t._v(" "),t._m(25),t._v(" "),a("hr"),t._v(" "),t._m(26),t._v(" "),a("p",[t._v("The administration is nothing more than a React front-end application calling an API. The front-end and the back-end are independent and can be deployed on different servers which brings us to different scenarios:")]),t._v(" "),t._m(27),t._v(" "),a("p",[t._v("Let's dive into the build configurations for each case.")]),t._v(" "),t._m(28),t._v(" "),a("p",[t._v("You don't need to touch anything in your configuration file. This is the default behaviour and the build configurations will be automatically set. The server will start on the defined port and the administration panel will be accessible through http://yourdomain.com:1337/dashboard.")]),t._v(" "),a("p",[t._v("You might want to change the path to access to the administration panel. Here the required configurations to change the path:")]),t._v(" "),t._m(29),t._v(" "),t._m(30),a("p",[a("strong",[t._v("You have to rebuild the administration panel to make this work.")]),t._v(" Please follow the "),a("router-link",{attrs:{to:"./../guides/deployment.html"}},[t._v("step #2 of the deployment guide")]),t._v(".")],1),t._v(" "),t._m(31),t._v(" "),a("p",[t._v("It's very common to deploy the front-end and the back-end on different servers. Here the required configurations to handle this case:")]),t._v(" "),t._m(32),t._v(" "),t._m(33),t._m(34),t._v(" "),t._m(35),t._v(" "),a("p",[t._v("The DOM should look like this:")]),t._v(" "),t._m(36),t._v(" "),t._m(37),t._m(38),t._v(" "),t._m(39),t._v(" "),a("p",[t._v("In this case, we suppose that you decided to put your administration and the plugins on the same server but on a different server as the API.")]),t._v(" "),t._m(40),t._v(" "),t._m(41),t._m(42),t._v(" "),t._m(43),t._v(" "),t._m(44),t._m(45),t._v(" "),t._m(46),t._v(" "),t._m(47),t._m(48)])},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"admin-panel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#admin-panel","aria-hidden":"true"}},[this._v("#")]),this._v(" Admin panel")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"files-structure"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#files-structure","aria-hidden":"true"}},[this._v("#")]),this._v(" Files structure")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The entire logic of the admin panel is located in a single folder named "),s("code",[this._v("./admin/")]),this._v(". This directory contains the following structure:")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[this._v("/admin\n└─── admin\n| └─── build // Webpack generated build of the front-end\n| └─── src // Front-end directory\n| └─── app.js // Entry point of the React application\n| └─── assets // Assets directory containing images,...\n| └─── components // Admin's React components directory\n| └─── containers // Admin's high level components directory\n| └─── favicon.ico // Favicon displayed in web browser\n| └─── i18n.js // Internalization logic\n| └─── index.html // Basic html file in which are injected necessary styles and scripts\n| └─── reducers.js // Redux reducers logic\n| └─── store.js // Redux store logic\n| └─── styles // Directory containing the global styles. Specific styles are defined at the component level\n| └─── translations // Directory containing text messages for each supported languages\n└─── config\n| └─── routes.json // Admin's API routes\n| └─── layout.json // Admin's specific settings\n└─── controllers // Admin's API controllers\n└─── services // Admin's API services\n└─── packages.json // Admin's npm dependencies\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"customization"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#customization","aria-hidden":"true"}},[this._v("#")]),this._v(" Customization")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"change-access-url"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#change-access-url","aria-hidden":"true"}},[this._v("#")]),this._v(" Change access URL")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./config/environment/**/server.json")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"host"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"port"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("1337")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"autoReload"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"cron"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"admin"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"path"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"/dashboard"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"development-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#development-mode","aria-hidden":"true"}},[this._v("#")]),this._v(" Development mode")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Note that to modify the administration panel, your project needs to be created with using the "),s("code",[this._v("dev")]),this._v(" flag, an example of such would be: "),s("code",[this._v("strapi new strapi --dev")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("#1 — Install its own dependencies")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Run "),s("code",[this._v("npm install")]),this._v(" from the "),s("code",[this._v("./admin")]),this._v(" folder.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("#2 — Launch the development server")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Run "),s("code",[this._v("npm start")]),this._v(" from the "),s("code",[this._v("./admin")]),this._v(" folder. That's all.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("#3 — Go to the browser")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"note custom-block"},[s("p",[this._v("In development, all the plugins of your app are mounted in the same build as the administration panel.")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"colors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#colors","aria-hidden":"true"}},[this._v("#")]),this._v(" Colors")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"fonts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fonts","aria-hidden":"true"}},[this._v("#")]),this._v(" Fonts")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ul",[a("li",[t._v("Add the fonts files you need in "),a("code",[t._v("./admin/admin/src/styles/fonts")]),t._v(".")]),t._v(" "),a("li",[t._v("Import them from "),a("code",[t._v("./admin/admin/src/styles/base/fonts.scss")]),t._v(".")]),t._v(" "),a("li",[t._v("Use them by replacing the variables' values in "),a("code",[t._v("./admin/admin/src/styles/variables/variables.bootstrap.scss")]),t._v(".")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"logo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#logo","aria-hidden":"true"}},[this._v("#")]),this._v(" Logo")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("To change the top-left displayed admin panel's logo, replace the image located at "),s("code",[this._v("./admin/admin/src/assets/images/logo-strapi.png")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"note custom-block"},[s("p",[this._v("make sure the size of your image is the same as the existing one (434px x 120px).")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"build"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build","aria-hidden":"true"}},[this._v("#")]),this._v(" Build")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[this._v("npm run setup\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("This will replace the folder's content located at "),s("code",[this._v("./admin/admin/build")]),this._v(". Visit http://localhost:1337/admin/ to make sure your updates have been taken in account.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"note custom-block"},[s("p",[this._v("You should now create a project without "),s("code",[this._v("--dev")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"deployment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deployment","aria-hidden":"true"}},[this._v("#")]),this._v(" Deployment")])},function(){var t=this.$createElement,s=this._self._c||t;return s("ol",[s("li",[this._v("Deploy the entire project on the same server.")]),this._v(" "),s("li",[this._v("Deploy the administration panel on another server (AWS S3, Azure, etc) than the API.")]),this._v(" "),s("li",[this._v("Deploy the administration panel and the plugins on another server than the API.")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h4",{attrs:{id:"deploy-the-entire-project-on-the-same-server"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deploy-the-entire-project-on-the-same-server","aria-hidden":"true"}},[this._v("#")]),this._v(" Deploy the entire project on the same server.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./config/environment/**/server.json")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"host"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"port"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("1337")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoReload"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"cron"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"path"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"/dashboard"')]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// We change the path to access to the admin (highly recommended for security reasons).")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h4",{attrs:{id:"deploy-the-administration-panel-on-another-server-aws-s3-azure-etc-than-the-api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deploy-the-administration-panel-on-another-server-aws-s3-azure-etc-than-the-api","aria-hidden":"true"}},[this._v("#")]),this._v(" Deploy the administration panel on another server (AWS S3, Azure, etc) than the API.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./config/environment/**/server.json")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"host"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"port"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("1337")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoReload"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"cron"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"path"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"/dashboard"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"build"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"host"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"/"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Note: The administration will be accessible from the root of the domain (ex: http//yourfrontend.com/)")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"backend"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"http://yourbackend.com"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"plugins"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"source"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"backend"')]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// What does it means? The script tags in the index.html will use the backend value to load the plugins (ex: http://yourbackend.com/dashboard/content-manager/main.js).")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The administration URL will be http://yourfrontend.com and every request from the panel will hit the backend at http://yourbackend.com. The plugins will be injected through the "),s("code",[this._v("origin")]),this._v(" (means the API itself). In other words, the plugins URLs will be "),s("code",[this._v("http://yourbackend.com/dashboard/content-manager/main.js")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"note custom-block"},[s("p",[this._v("How it is possible? The API (the Strapi server) owns the plugin and these plugins are exposed through "),s("code",[this._v("http://yourbackend.com/admin/**/main.js")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./admin/admin/build/index.html")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-html extra-class"},[a("pre",{pre:!0,attrs:{class:"language-html"}},[a("code",[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("html")]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("head")]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("body")]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("div")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("id")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("app"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("type")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("text/javascript"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("/vendor.dll.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("type")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("text/javascript"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("/main.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("http://yourbackend.com/dashboard/content-manager/main.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("http://yourbackend.com/dashboard/settings-manager/main.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("http://yourbackend.com/dashboard/content-type-builder/main.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n"),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"note custom-block"},[s("p",[this._v("The plugins are injected using the "),s("code",[this._v("./admin/admin/build/config/plugins.json")]),this._v(". To see the plugins URLs in the "),s("code",[this._v("index.html")]),this._v(", you need to launch the administration panel in the browser.")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h4",{attrs:{id:"deploy-the-administration-panel-and-the-plugins-on-another-server-than-the-api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deploy-the-administration-panel-and-the-plugins-on-another-server-than-the-api","aria-hidden":"true"}},[this._v("#")]),this._v(" Deploy the administration panel and the plugins on another server than the API")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./config/environment/**/server.json")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"host"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"localhost"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"port"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("1337")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"autoReload"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"cron"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("false")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"admin"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"build"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"host"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"http://yourfrontend.com/dashboard"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// Note: The custom path has moved directly in the host URL.")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"backend"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"http://yourbackend.com"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"plugins"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"source"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"host"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token comment"}},[t._v("// What does it means? The script tags in the index.html will use the host value to load the plugins (ex: http://yourfrontend.com/dashboard/plugins/content-manager/main.js).")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"folder"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"/plugins"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The administration URL will be http://yourfrontend.com/dashboard and every request from the panel will hit the backend at http://yourbackend.com. The plugins will be injected through the "),s("code",[this._v("host")]),this._v(". It means that the plugins URLs will use the host URL as the origin. So the plugins URLs will be "),s("code",[this._v("http://yourfrontend.com/dashboard/plugins/content-manager/main.js")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("We also added a "),s("code",[this._v("folder")]),this._v(" setting to separate the plugins from the administration build. In your server, the files structure should look like this:")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[this._v("- src/\n - 0bd35bad03d09ca61ac6cce225112e36.svg\n - 1d51d8767683a24635702f720cda4e26.svg\n - af3aefd0529349e40e4817c87c620836.png\n - config/\n - plugins.json\n - main.js\n - main.js.map\n - plugins/\n - content-type-builder/\n - 0bd35bad03d09ca61ac6cce225112e36.svg\n - 1d51d8767683a24635702f720cda4e26.svg\n - af3aefd0529349e40e4817c87c620836.png\n - main.js\n - main.js.map\n - content-manager/\n - ...\n - main.js\n - main.js.map\n - settings-manager/\n - ...\n - main.js\n - main.js.map\n - vendor.dll.js\n - vendor.dll.js.map\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The generated "),s("code",[this._v("index.html")]),this._v(" will look like this:")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./admin/admin/build/index.html")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-html extra-class"},[a("pre",{pre:!0,attrs:{class:"language-html"}},[a("code",[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("html")]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("head")]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("body")]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("div")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("id")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("app"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("type")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("text/javascript"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("/dashboard/vendor.dll.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("type")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("text/javascript"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("/dashboard/main.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("/dashboard/plugins/content-manager/main.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("/dashboard/plugins/settings-manager/main.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{attrs:{class:"token attr-value"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("=")]),a("span",{attrs:{class:"token punctuation"}},[t._v('"')]),t._v("/dashboard/plugins/content-type-builder/main.js"),a("span",{attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{attrs:{class:"token script language-javascript"}}),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n "),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n"),a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token tag"}},[a("span",{attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"note custom-block"},[s("p",[this._v("The plugins are injected using the "),s("code",[this._v("./admin/admin/build/config/plugins.json")]),this._v(". To see the plugins URLs in the "),s("code",[this._v("index.html")]),this._v(", you need to launch the administration panel in the browser.")])])}],!1,null,null,null);e.options.__file="customize-admin.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/3.4d92d5e3.js b/docs/.vuepress/dist/assets/js/3.4d92d5e3.js new file mode 100644 index 0000000000..2d847c73db --- /dev/null +++ b/docs/.vuepress/dist/assets/js/3.4d92d5e3.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{236:function(t,e,a){"use strict";a.r(e);var s=a(0),r=Object(s.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"content"},[a("div",{staticClass:"intro custom-block"},[t._m(0),t._v(" "),a("p",[a("a",{attrs:{href:"https://travis-ci.org/wistityhq/strapi",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://travis-ci.org/wistityhq/strapi.svg?branch=master",alt:"Build Status"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"http://slack.strapi.io",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"http://strapi-slack.herokuapp.com/badge.svg",alt:"Slack Status"}}),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("Strapi is an open-source Node.js rich framework for building applications and services.")])]),t._v(" "),a("p",[t._v("Strapi enables developers to focus on writing reusable application logic instead of spending time\nbuilding infrastructure. It is designed for building practical, production-ready Node.js applications\nin a matter of hours instead of weeks.")]),t._v(" "),a("p",[t._v("The framework sits on top of "),a("a",{attrs:{href:"http://koajs.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Koa"),a("OutboundLink")],1),t._v(". Its ensemble of small modules work\ntogether to provide simplicity, maintainability, and structural conventions to Node.js applications.")]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),a("p",[t._v("Install the latest stable release with the npm command-line tool:")]),t._v(" "),t._m(4),t._m(5),t._v(" "),a("blockquote",[a("p",[t._v("We advise you to use our Studio to build APIs. To do so, you need to create a Strapi account.\n"),a("a",{attrs:{href:"http://studio.strapi.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Go to the Strapi Studio to signup"),a("OutboundLink")],1),t._v(".\nStudio is dedicated to developers to build applications without writing\nany single line of code thanks to its powerful set of tools.")])]),t._v(" "),a("p",[t._v("After creating an account on the Strapi Studio, you are able to link your machine to your\nStrapi Studio account to get access to all features offered by the Strapi ecosystem.\nUse your Strapi account credentials.")]),t._v(" "),t._m(6),t._m(7),t._v(" "),a("p",[t._v("You now are able to use the Strapi CLI. Simply create your first application and start the server:")]),t._v(" "),t._m(8),t._m(9),t._v(" "),t._m(10),a("p",[t._v("This will generate a Strapi application without:")]),t._v(" "),t._m(11),t._v(" "),a("p",[t._v("This feature allows you to only use Strapi for your HTTP server structure if you want to.")]),t._v(" "),t._m(12),t._v(" "),t._m(13),a("p",[t._v("The default home page is accessible at "),a("a",{attrs:{href:"http://localhost:1337/",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://localhost:1337/"),a("OutboundLink")],1),t._v(".")]),t._v(" "),t._m(14),t._v(" "),a("p",[t._v("The Strapi ecosystem offers you two possibilities to create a complete RESTful API.")]),t._v(" "),t._m(15),t._v(" "),t._m(16),t._m(17),t._v(" "),t._m(18),t._m(19),t._v(" "),a("p",[t._v("The Strapi Studio allows you to easily build and manage your application environment\nthanks to a powerful User Interface.")]),t._v(" "),a("p",[t._v("Log into the Strapi Studio with your user account ("),a("a",{attrs:{href:"http://studio.strapi.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://studio.strapi.io"),a("OutboundLink")],1),t._v(")\nand follow the instructions to start the experience.")]),t._v(" "),t._m(20),t._v(" "),t._m(21),t._v(" "),a("p",[t._v("Strapi comes with a simple but yet powerful dashboard.")]),t._v(" "),t._m(22),t._v(" "),t._m(23),t._v(" "),t._m(24),t._v(" "),t._m(25),t._v(" "),t._m(26),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://strapi.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Strapi website"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://twitter.com/strapijs",target:"_blank",rel:"noopener noreferrer"}},[t._v("Strapi news on Twitter"),a("OutboundLink")],1)])])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"strapi"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi","aria-hidden":"true"}},[this._v("#")]),this._v(" Strapi")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("strong",[this._v("DISCLAIMER")]),this._v(": "),e("em",[this._v("This version is maintained for criticals issues only")]),this._v(".")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"getting-started-in-a-minute"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-in-a-minute","aria-hidden":"true"}},[this._v("#")]),this._v(" Getting started in a minute")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"installation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installation","aria-hidden":"true"}},[this._v("#")]),this._v(" Installation")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ "),e("span",{attrs:{class:"token function"}},[this._v("npm")]),this._v(" "),e("span",{attrs:{class:"token function"}},[this._v("install")]),this._v(" strapi -g\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"link-to-the-strapi-studio"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#link-to-the-strapi-studio","aria-hidden":"true"}},[this._v("#")]),this._v(" Link to the Strapi Studio")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi login\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"create-your-first-project"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-your-first-project","aria-hidden":"true"}},[this._v("#")]),this._v(" Create your first project")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi new "),e("span",{attrs:{class:"token operator"}},[this._v("<")]),this._v("appName"),e("span",{attrs:{class:"token operator"}},[this._v(">")]),this._v("\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Note that you can generate a dry application using the "),e("code",[this._v("dry")]),this._v(" option:")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi new "),e("span",{attrs:{class:"token operator"}},[this._v("<")]),this._v("appName"),e("span",{attrs:{class:"token operator"}},[this._v(">")]),this._v(" --dry\n")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ul",[a("li",[t._v("the built-in "),a("code",[t._v("user")]),t._v(", "),a("code",[t._v("email")]),t._v(" and "),a("code",[t._v("upload")]),t._v(" APIs,")]),t._v(" "),a("li",[t._v("the "),a("code",[t._v("grant")]),t._v(" hook,")]),t._v(" "),a("li",[t._v("the open-source admin panel,")]),t._v(" "),a("li",[t._v("the Waterline ORM ("),a("code",[t._v("waterline")]),t._v(" and "),a("code",[t._v("blueprints")]),t._v(" hooks disabled),")]),t._v(" "),a("li",[t._v("the Strapi Studio connection ("),a("code",[t._v("studio")]),t._v(" hook disabled).")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"start-your-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#start-your-application","aria-hidden":"true"}},[this._v("#")]),this._v(" Start your application")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ "),e("span",{attrs:{class:"token function"}},[this._v("cd")]),this._v(" "),e("span",{attrs:{class:"token operator"}},[this._v("<")]),this._v("appName"),e("span",{attrs:{class:"token operator"}},[this._v(">")]),this._v("\n$ strapi start\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h3",{attrs:{id:"create-your-first-api"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-your-first-api","aria-hidden":"true"}},[this._v("#")]),this._v(" Create your first API")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"via-the-cli"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#via-the-cli","aria-hidden":"true"}},[this._v("#")]),this._v(" Via the CLI")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi generate api "),e("span",{attrs:{class:"token operator"}},[this._v("<")]),this._v("apiName"),e("span",{attrs:{class:"token operator"}},[this._v(">")]),this._v("\n")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("p",[t._v("For example, you can create a "),a("code",[t._v("car")]),t._v(" API with a name ("),a("code",[t._v("name")]),t._v("), year ("),a("code",[t._v("year")]),t._v(") and\nthe license plate ("),a("code",[t._v("license")]),t._v(") with:")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[this._v("$ strapi generate api car name:string year:integer license:string\n")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h4",{attrs:{id:"via-the-strapi-studio"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#via-the-strapi-studio","aria-hidden":"true"}},[this._v("#")]),this._v(" Via the Strapi Studio")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"http://strapi.io/assets/screenshots/studio.png",alt:"Strapi Studio",title:"Strapi Studio"}}),this._v(" "),e("em",[this._v("Simply manage your APIs and relations thanks to the Strapi Studio.")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"manage-your-data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#manage-your-data","aria-hidden":"true"}},[this._v("#")]),this._v(" Manage your data")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"http://strapi.io/assets/screenshots/create.png",alt:"Strapi Dashboard",title:"Strapi Dashboard"}}),this._v(" "),e("em",[this._v("Create, read, update and delete your data.")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("img",{attrs:{src:"http://strapi.io/assets/screenshots/permissions.png",alt:"Strapi Dashboard",title:"Strapi Dashboard"}}),this._v(" "),e("em",[this._v("Manage user settings, login, registration, groups and permissions on the fly.")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"resources"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resources","aria-hidden":"true"}},[this._v("#")]),this._v(" Resources")])},function(){var t=this.$createElement,e=this._self._c||t;return e("ul",[e("li",[e("a",{attrs:{href:"(https://github.com/strapi/strapi/blob/master/CONTRIBUTING.md)"}},[this._v("Contributing guide")])]),this._v(" "),e("li",[e("a",{attrs:{href:"(https://github.com/strapi/strapi/blob/master/LICENSE.md)"}},[this._v("MIT License")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"links"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#links","aria-hidden":"true"}},[this._v("#")]),this._v(" Links")])}],!1,null,null,null);r.options.__file="README.md";e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/30.5d2829b8.js b/docs/.vuepress/dist/assets/js/30.5d2829b8.js new file mode 100644 index 0000000000..17c4a7c341 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/30.5d2829b8.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{244:function(t,s,a){"use strict";a.r(s);var n=a(0),o=Object(n.a)({},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[a("h1",{attrs:{id:"hooks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hooks","aria-hidden":"true"}},[t._v("#")]),t._v(" Hooks")]),t._v(" "),a("p",[t._v("The hooks are modules that add functionality to the core. They are loaded during the server boot. For example, if your project needs to work with a SQL database, your will have to add the hook "),a("code",[t._v("strapi-hook-bookshelf")]),t._v(" to be able to connect your app with your database.")]),t._v(" "),a("p",[a("strong",[t._v("Path —")]),t._v(" "),a("code",[t._v("./hooks/documentation/lib/index.js")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" fs "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token function"}},[t._v("require")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'fs'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" path "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token function"}},[t._v("require")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'path'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nmodule"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function-variable function"}},[t._v("exports")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" strapi "),a("span",{attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" hook "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("/**\n * Default options\n */")]),t._v("\n\n defaults"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n documentation"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n path"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'/public/documentation'")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("/**\n * Initialize the hook\n */")]),t._v("\n\n initialize"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" cb "),a("span",{attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("try")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Check if documentation folder exist.")]),t._v("\n fs"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("accessSync")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("path"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("resolve")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("process"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("cwd")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("defaults"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("documentation"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("path"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token class-name"}},[t._v("e")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Otherwise, create the folder.")]),t._v("\n fs"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("mkdirSync")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("path"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("resolve")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("process"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("cwd")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("defaults"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("documentation"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("path"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// This function doesn't really exist,")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// it's just an example to tell you that you")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// run your business logic and when it's done")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// you just need to call the callback `cb`")]),t._v("\n "),a("span",{attrs:{class:"token function"}},[t._v("generateDocumentation")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("path"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("resolve")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("process"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("cwd")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("this")]),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("defaults"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("documentation"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("path"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Error: it will display the error to the user")]),t._v("\n "),a("span",{attrs:{class:"token comment"}},[t._v("// and the hook won't be loaded.")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{attrs:{class:"token function"}},[t._v("cb")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("err"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Success.")]),t._v("\n "),a("span",{attrs:{class:"token function"}},[t._v("cb")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" hook"),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("ul",[a("li",[a("code",[t._v("defaults")]),t._v(" (object): Contains the defaults configurations. This object is merged to "),a("code",[t._v("strapi.config.hook.settings.**")]),t._v(".")]),t._v(" "),a("li",[a("code",[t._v("initialize")]),t._v(" (function): Called during the server boot. The callback "),a("code",[t._v("cb")]),t._v(" needs to be called. Otherwise, the hook won't be loaded.")])]),t._v(" "),a("p",[t._v("Every folder that follows this name pattern "),a("code",[t._v("strapi-*")]),t._v(" in your "),a("code",[t._v("./node_modules")]),t._v(" folder will be loaded as a hook. The hooks are accessible through the "),a("code",[t._v("strapi.hook")]),t._v(" variable.")]),t._v(" "),a("h2",{attrs:{id:"structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#structure","aria-hidden":"true"}},[t._v("#")]),t._v(" Structure")]),t._v(" "),a("p",[t._v("A hook needs to follow the structure below:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("/hook\n└─── lib\n - index.js\n- LICENSE.md\n- package.json\n- README.md\n")])])]),a("p",[t._v("The "),a("code",[t._v("index.js")]),t._v(" is the entry point to your hook. It should look like the example above.")]),t._v(" "),a("h2",{attrs:{id:"dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies","aria-hidden":"true"}},[t._v("#")]),t._v(" Dependencies")]),t._v(" "),a("p",[t._v("It happens that a hook has a dependency to another one. For example, the "),a("code",[t._v("strapi-hook-bookshelf")]),t._v(" has a dependency to "),a("code",[t._v("strapi-hook-knex")]),t._v(". Without it, the "),a("code",[t._v("strapi-hook-bookshelf")]),t._v(" can't work correctly. It also means that the "),a("code",[t._v("strapi-hook-knex")]),t._v(" hook has to be loaded before.")]),t._v(" "),a("p",[t._v("To handle this case, you need to update the "),a("code",[t._v("package.json")]),t._v(" at the root of your hook.")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"name"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"strapi-hook-bookshelf"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"version"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"x.x.x"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"description"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v('"Bookshelf hook for the Strapi framework"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"dependencies"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n ...\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"strapi"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"dependencies"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"strapi-hook-knex"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"custom-hooks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#custom-hooks","aria-hidden":"true"}},[t._v("#")]),t._v(" Custom hooks")]),t._v(" "),a("p",[t._v("The framework allows to load hooks from the project directly without having to install them from npm. It's great way to take advantage of the features of the hooks system for code that doesn't need to be shared between apps. To achieve this, you have to create a "),a("code",[t._v("./hooks")]),t._v(" folder at the root of your project and put the hooks into it.")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("/project\n└─── admin\n└─── api\n└─── config\n└─── hooks\n│ └─── strapi-documentation\n│ - index.js\n│ └─── strapi-server-side-rendering\n│ - index.js\n└─── plugins\n└─── public\n- favicon.ico\n- package.json\n- server.js\n")])])])])}],!1,null,null,null);o.options.__file="hooks.md";s.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/31.fad00a3a.js b/docs/.vuepress/dist/assets/js/31.fad00a3a.js new file mode 100644 index 0000000000..c281480e56 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/31.fad00a3a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{208:function(t,s,n){"use strict";n.r(s);var a=n(0),e=Object(a.a)({},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),t._m(2),t._m(3),t._v(" "),n("p",[t._v("The global logger is configured by environment variables.")]),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),t._m(7),t._m(8),t._v(" "),n("p",[t._v("To find more details about the logger API, please refer to the "),n("a",{attrs:{href:"http://getpino.io/#/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Pino documentation"),n("OutboundLink")],1),t._v(".")])])},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"logging"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#logging","aria-hidden":"true"}},[this._v("#")]),this._v(" Logging")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Strapi relies on an extremely fast Node.js logger called Pino that includes a shell utility to pretty-print its log files. It provides great performances and doesn't slow down your app. The logger is accessible through the global variable "),s("code",[this._v("strapi.log")]),this._v(" or the request's context "),s("code",[this._v("ctx.log")]),this._v(" if enabled.")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-js extra-class"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{attrs:{class:"token comment"}},[t._v("// Folder.js controller")]),t._v("\n"),n("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" fs "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{attrs:{class:"token function"}},[t._v("require")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'fs'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),n("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" path "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{attrs:{class:"token function"}},[t._v("require")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token string"}},[t._v("'path'")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nmodule"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("exports "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),n("span",{attrs:{class:"token comment"}},[t._v("/**\n * Retrieve app's folders.\n *\n * @return {Object|Array}\n */")]),t._v("\n\n findFolders"),n("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ctx"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("try")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" folders "),n("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" fs"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("readdirSync")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("path"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("resolve")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("process"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("cwd")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n strapi"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("info")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("folders"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),n("span",{attrs:{class:"token comment"}},[t._v("// ctx.log.info(folders);")]),t._v("\n\n ctx"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("send")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("folders"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),n("span",{attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),n("span",{attrs:{class:"token class-name"}},[t._v("error")]),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n strapi"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("fatal")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),n("span",{attrs:{class:"token comment"}},[t._v("// ctx.log.fatal(error);")]),t._v("\n ctx"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),n("span",{attrs:{class:"token function"}},[t._v("badImplementation")]),n("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),n("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("message"),n("span",{attrs:{class:"token punctuation"}},[t._v(")")]),n("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"global-logger-configuration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#global-logger-configuration","aria-hidden":"true"}},[this._v("#")]),this._v(" Global logger configuration")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("p",[n("code",[t._v("STRAPI_LOG_LEVEL")]),t._v(": Can be 'fatal', 'error', 'warn', 'info', 'debug' or 'trace'.\n"),n("code",[t._v("STRAPI_LOG_TIMESTAMP")]),t._v(": Can be true/false\n"),n("code",[t._v("STRAPI_LOG_PRETTY_PRINT")]),t._v(": Can be true/false\n"),n("code",[t._v("STRAPI_LOG_FORCE_COLOR")]),t._v(": Can be true/false")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"request-logging-middleware"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#request-logging-middleware","aria-hidden":"true"}},[this._v("#")]),this._v(" Request logging middleware")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("To configure the request-logger middleware, you have to edit the following file "),s("code",[this._v("./config/environments/*/request.json")]),this._v(".")])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("div",{staticClass:"language-json extra-class"},[n("pre",{pre:!0,attrs:{class:"language-json"}},[n("code",[n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n ...\n "),n("span",{attrs:{class:"token property"}},[t._v('"logger"')]),n("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),n("span",{attrs:{class:"token property"}},[t._v('"level"')]),n("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token string"}},[t._v('"debug"')]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{attrs:{class:"token property"}},[t._v('"exposeInContext"')]),n("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token boolean"}},[t._v("true")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),n("span",{attrs:{class:"token property"}},[t._v('"requests"')]),n("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),n("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),n("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n"),n("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,n=t._self._c||s;return n("ul",[n("li",[n("code",[t._v("level")]),t._v(": defines the desired logging level (fatal, error, warn, info, debug, trace).")]),t._v(" "),n("li",[n("code",[t._v("exposeInContext")]),t._v(": allows access to the logger through the context.")]),t._v(" "),n("li",[n("code",[t._v("requests")]),t._v(": incoming HTTP requests will be logged.")])])}],!1,null,null,null);e.options.__file="logging.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/32.a6900221.js b/docs/.vuepress/dist/assets/js/32.a6900221.js new file mode 100644 index 0000000000..8297923103 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/32.a6900221.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{207:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),a("p",[t._v("The middlewares are functions which are composed and executed in a stack-like manner upon request. If you are not familiar with the middleware stack in Koa, we highly recommend you to read the "),a("a",{attrs:{href:"http://koajs.com/#introduction",target:"_blank",rel:"noopener noreferrer"}},[t._v("Koa's documentation introduction"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("Enable the middleware in environments settings")]),t._v(" "),t._m(1),t._v(" "),t._m(2),a("p",[a("strong",[t._v("Path —")]),t._v(" "),a("a",{attrs:{href:"https://github.com/strapi/strapi/blob/master/packages/strapi/lib/middlewares/responseTime/index.js",target:"_blank",rel:"noopener noreferrer"}},[a("code",[t._v("strapi/lib/middlewares/responseTime/index.js")]),a("OutboundLink")],1),t._v(".")]),t._v(" "),t._m(3),t._m(4),t._v(" "),a("p",[t._v("The core of Strapi embraces a small list of middlewares for performances, security and great error handling.")]),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),t._m(7),t._v(" "),a("p",[t._v("A middleware needs to follow the structure below:")]),t._v(" "),t._m(8),t._m(9),t._v(" "),t._m(10),t._v(" "),t._m(11),t._v(" "),t._m(12),t._m(13),t._v(" "),t._m(14),t._v(" "),t._m(15),t._v(" "),t._m(16),t._v(" "),t._m(17),t._m(18),t._v(" "),t._m(19),t._v(" "),t._m(20),t._v(" "),t._m(21),t._v(" "),t._m(22),t._m(23),t._v(" "),t._m(24),t._v(" "),t._m(25),t._v(" "),t._m(26),t._m(27),t._v(" "),t._m(28),t._v(" "),t._m(29),t._v(" "),t._m(30),t._m(31),t._v(" "),t._m(32),t._v(" "),a("p",[t._v("For this example, we are going to imagine that we have 10 middlewares to load:")]),t._v(" "),t._m(33),t._v(" "),t._m(34),t._v(" "),t._m(35),a("p",[t._v("Here is the loader order:")]),t._v(" "),t._m(36)])},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"middlewares"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#middlewares","aria-hidden":"true"}},[this._v("#")]),this._v(" Middlewares")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" ["),s("code",[this._v("config/environments/**")]),this._v("]")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[t._v(" "),a("span",{attrs:{class:"token property"}},[t._v('"urlReader"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"enabled"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("module"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function-variable function"}},[t._v("exports")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" strapi "),a("span",{attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n initialize"),a("span",{attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token keyword"}},[t._v("function")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("cb"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n strapi"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("app"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("use")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ctx"),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" start "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" Date"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("now")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{attrs:{class:"token keyword"}},[t._v("await")]),t._v(" "),a("span",{attrs:{class:"token function"}},[t._v("next")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{attrs:{class:"token keyword"}},[t._v("const")]),t._v(" delta "),a("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" Math"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("ceil")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Date"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token function"}},[t._v("now")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{attrs:{class:"token operator"}},[t._v("-")]),t._v(" start"),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{attrs:{class:"token comment"}},[t._v("// Set X-Response-Time header")]),t._v("\n ctx"),a("span",{attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{attrs:{class:"token keyword"}},[t._v("set")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token string"}},[t._v("'X-Response-Time'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" delta "),a("span",{attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),a("span",{attrs:{class:"token string"}},[t._v("'ms'")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),a("span",{attrs:{class:"token function"}},[t._v("cb")]),a("span",{attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("ul",[s("li",[s("code",[this._v("initialize")]),this._v(" (function): Called during the server boot. The callback "),s("code",[this._v("cb")]),this._v(" needs to be called. Otherwise, the middleware won't be loaded into the stack.")])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ul",[a("li",[t._v("boom")]),t._v(" "),a("li",[t._v("cors")]),t._v(" "),a("li",[t._v("cron")]),t._v(" "),a("li",[t._v("csp")]),t._v(" "),a("li",[t._v("csrf")]),t._v(" "),a("li",[t._v("favicon")]),t._v(" "),a("li",[t._v("gzip")]),t._v(" "),a("li",[t._v("hsts")]),t._v(" "),a("li",[t._v("ip")]),t._v(" "),a("li",[t._v("language")]),t._v(" "),a("li",[t._v("logger")]),t._v(" "),a("li",[t._v("p3p")]),t._v(" "),a("li",[t._v("parser")]),t._v(" "),a("li",[t._v("public")]),t._v(" "),a("li",[t._v("responses")]),t._v(" "),a("li",[t._v("responseTime")]),t._v(" "),a("li",[t._v("router")]),t._v(" "),a("li",[t._v("session")]),t._v(" "),a("li",[t._v("xframe")]),t._v(" "),a("li",[t._v("xss")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"note custom-block"},[s("p",[this._v("The following middlewares cannot be disabled: responses, router, logger and boom.")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"structure"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#structure","aria-hidden":"true"}},[this._v("#")]),this._v(" Structure")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[this._v("/middleware\n└─── lib\n - index.js\n- LICENSE.md\n- package.json\n- README.md\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The "),s("code",[this._v("index.js")]),this._v(" is the entry point to your middleware. It should look like the example above.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"custom-middlewares"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#custom-middlewares","aria-hidden":"true"}},[this._v("#")]),this._v(" Custom middlewares")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The framework allows the application to override the default middlewares and add new ones. You have to create a "),s("code",[this._v("./middlewares")]),this._v(" folder at the root of your project and put the middlewares into it.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[this._v("/project\n└─── admin\n└─── api\n└─── config\n└─── middlewares\n│ └─── responseTime // It will override the core default responseTime middleware\n│ - index.js\n│ └─── views // It will be added into the stack of middleware\n│ - index.js\n└─── plugins\n└─── public\n- favicon.ico\n- package.json\n- server.js\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("Every middleware will be injected into the Koa stack. To manage the load order, please refer to the "),s("a",{attrs:{href:"#load-order"}},[this._v("Middleware order section")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"load-order"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#load-order","aria-hidden":"true"}},[this._v("#")]),this._v(" Load order")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The middlewares are injected into the Koa stack asynchronously. Sometimes it happens that some of these middlewares need to be loaded in a specific order. To define a load order, we created a dedicated file located in "),s("code",[this._v("./config/middleware.json")]),this._v(".")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./config/middleware.json")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"timeout"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("100")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"load"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"before"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"responseTime"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"logger"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"cors"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"responses"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"order"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"Define the middlewares\' load order by putting their name in this array in the right order"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"after"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"parser"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"router"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ul",[a("li",[a("code",[t._v("timeout")]),t._v(": defines the maximum allowed milliseconds to load a middleware.")]),t._v(" "),a("li",[a("code",[t._v("load")]),t._v(":\n"),a("ul",[a("li",[a("code",[t._v("before")]),t._v(": array of middlewares that need to be loaded in the first place. The order of this array matters.")]),t._v(" "),a("li",[a("code",[t._v("order")]),t._v(": array of middlewares that need to be loaded in a specific order.")]),t._v(" "),a("li",[a("code",[t._v("after")]),t._v(": array of middlewares that need to be loaded at the end of the stack. The order of this array matters.")])])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("h4",{attrs:{id:"examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examples","aria-hidden":"true"}},[this._v("#")]),this._v(" Examples")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Load a middleware at the very first place")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./config/middleware.json")])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"timeout"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("100")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"load"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"before"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"responseTime"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"logger"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"order"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"after"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The "),s("code",[this._v("responseTime")]),this._v(" middleware will be loaded first. Immediately followed by the "),s("code",[this._v("logger")]),this._v(" middleware. Then, the others middlewares will be loaded asynchronously.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Load a middleware after another one")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./config/middleware.json")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"timeout"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("100")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"load"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"before"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"order"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"p3p"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"gzip"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"after"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The "),s("code",[this._v("gzip")]),this._v(" middleware will be loaded after the "),s("code",[this._v("p3p")]),this._v(" middleware. All the others will be loaded asynchronously.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Load a middleware at the very end")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Path —")]),this._v(" "),s("code",[this._v("./config/middleware.json")]),this._v(".")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"timeout"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("100")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"load"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"before"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n ...\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"order"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"after"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"parser"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"router"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("The "),s("code",[this._v("router")]),this._v(" middleware will be loaded at the very end. The "),s("code",[this._v("parser")]),this._v(" middleware will be loaded after all the others and just before the "),s("code",[this._v("router")]),this._v(" middleware.")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("strong",[this._v("Complete example")])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ul",[a("li",[t._v("cors")]),t._v(" "),a("li",[t._v("cron")]),t._v(" "),a("li",[t._v("favicon")]),t._v(" "),a("li",[t._v("gzip")]),t._v(" "),a("li",[t._v("logger")]),t._v(" "),a("li",[t._v("p3p")]),t._v(" "),a("li",[t._v("parser")]),t._v(" "),a("li",[t._v("response")]),t._v(" "),a("li",[t._v("responseTime")]),t._v(" "),a("li",[t._v("router")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("We assume that we set the "),s("code",[this._v("./config/middleware.json")]),this._v(" file like this:")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"timeout"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token number"}},[t._v("100")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"load"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"before"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"responseTime"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"logger"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"cors"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"order"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"p3p"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"gzip"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token property"}},[t._v('"after"')]),a("span",{attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"parser"')]),a("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{attrs:{class:"token string"}},[t._v('"router"')]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ol",[a("li",[t._v("responseTime (loaded at the very first place)")]),t._v(" "),a("li",[t._v("logger")]),t._v(" "),a("li",[t._v("cors")]),t._v(" "),a("li",[t._v("favicon (position order not guarantee)")]),t._v(" "),a("li",[t._v("p3p")]),t._v(" "),a("li",[t._v("cron")]),t._v(" "),a("li",[t._v("gzip (loaded after the p3p middlewares)")]),t._v(" "),a("li",[t._v("response (position order not guarantee)")]),t._v(" "),a("li",[t._v("parser")]),t._v(" "),a("li",[t._v("router (loaded at the very end place)")])])}],!1,null,null,null);e.options.__file="middlewares.md";s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/33.bbfb3084.js b/docs/.vuepress/dist/assets/js/33.bbfb3084.js new file mode 100644 index 0000000000..dca0213a57 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/33.bbfb3084.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{206:function(e,t,i){"use strict";i.r(t);var a=i(0),n=Object(a.a)({},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"content"},[e._m(0),e._v(" "),i("p",[e._v("In order to improve the product and understand how the community is using it, we are collecting non-sensitive data.")]),e._v(" "),e._m(1),e._v(" "),i("p",[e._v("Here is the list of the collected data and why we need them.")]),e._v(" "),e._m(2),e._v(" "),i("p",[e._v("We are not collecting sensitive data such as databases configurations, environment or custom variables. The data are encrypted and anonymised.")]),e._v(" "),i("div",{staticClass:"warning custom-block"},[i("p",{staticClass:"custom-block-title"},[e._v("GDPR")]),e._v(" "),i("p",[e._v("The collected data are non-sensitive or personal data. We are compliant with the European recommendations (see our "),i("a",{attrs:{href:"https://strapi.io/privacy",target:"_blank",rel:"noopener noreferrer"}},[e._v("Privacy Policy"),i("OutboundLink")],1),e._v(").")])]),e._v(" "),e._m(3),e._v(" "),e._m(4)])},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",{attrs:{id:"usage-tracking"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#usage-tracking","aria-hidden":"true"}},[this._v("#")]),this._v(" Usage tracking")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"collected-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#collected-data","aria-hidden":"true"}},[this._v("#")]),this._v(" Collected data")])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",[i("li",[i("strong",[e._v("UUID")]),e._v(" "),i("em",[e._v("Identify the app with a unique identifier.")])]),e._v(" "),i("li",[i("strong",[e._v("Model names and attributes names")]),e._v(" "),i("em",[e._v("Understand what kind of APIs are built with Strapi (content or product or service?)")])]),e._v(" "),i("li",[i("strong",[e._v("Environment state (development, staging, production)")]),e._v(" "),i("em",[e._v("Understand how the developers are using the different configurations? How many projects are started in production mode?")])]),e._v(" "),i("li",[i("strong",[e._v("Node modules names")]),e._v(" "),i("em",[e._v("Are developers integrating Strapi with Stripe? It means that we should develop a plugin to simplify the development process with Stripe.\nAre developers using Strapi with strapi-hook-bookshelf or strapi-hook-mongoose? It helps us prioritize the issues.")])]),e._v(" "),i("li",[i("strong",[e._v("OS")]),e._v(" "),i("em",[e._v("Is the community using Windows, Linux or Mac? It helps us prioritize the issues.")])]),e._v(" "),i("li",[i("strong",[e._v("Build configurations")]),e._v(" "),i("em",[e._v("How many people are deploying the admin on another server?")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"disable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#disable","aria-hidden":"true"}},[this._v("#")]),this._v(" Disable")])},function(){var e=this.$createElement,t=this._self._c||e;return t("p",[this._v("You can disable the tracking by removing the "),t("code",[this._v("uuid")]),this._v(" property in the "),t("code",[this._v("package.json")]),this._v(" file at the root of your project.")])}],!1,null,null,null);n.options.__file="usage-tracking.md";t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/34.0eb2f8aa.js b/docs/.vuepress/dist/assets/js/34.0eb2f8aa.js new file mode 100644 index 0000000000..dfdf74f875 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/34.0eb2f8aa.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{205:function(t,e,r){"use strict";r.r(e);var s=r(0),a=Object(s.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),t._m(4),t._v(" "),r("p",[t._v("Returns the Koa instance.")]),t._v(" "),t._m(5),t._v(" "),t._m(6),t._v(" "),t._m(7),t._v(" "),t._m(8),t._v(" "),t._m(9),t._v(" "),t._m(10),t._v(" "),t._m(11),t._v(" "),t._m(12),t._v(" "),t._m(13),t._v(" "),t._m(14),t._v(" "),t._m(15),t._v(" "),t._m(16),t._v(" "),t._m(17),t._v(" "),t._m(18),t._v(" "),t._m(19),t._v(" "),r("p",[t._v("Returns the Logger (Pino) instance.")]),t._v(" "),t._m(20),t._v(" "),t._m(21),t._v(" "),t._m(22),t._v(" "),t._m(23),t._v(" "),t._m(24),t._v(" "),t._m(25),t._v(" "),t._m(26),t._v(" "),r("p",[t._v("Returns a function that will returns the available queries for this model. This feature is only available inside the plugin's files (controllers, services, custom functions). For more details, see the [ORM queries section](../plugin-development/backend-development.md#ORM queries).")]),t._v(" "),t._m(27),t._v(" "),r("p",[t._v("Returns a function that reloads the entire app (with downtime).")]),t._v(" "),t._m(28),t._v(" "),r("p",[t._v("Returns the Router (Joi router) instance.")]),t._v(" "),t._m(29),t._v(" "),r("p",[t._v("Returns the "),r("a",{attrs:{href:"https://nodejs.org/api/http.html#http_class_http_server",target:"_blank",rel:"noopener noreferrer"}},[r("code",[t._v("http.Server")]),r("OutboundLink")],1),t._v(" instance.")]),t._v(" "),t._m(30),t._v(" "),t._m(31),t._v(" "),t._m(32),t._v(" "),r("p",[t._v("Returns a function that loads the configurations, middlewares and hooks. Then, it executes the bootstrap file, freezes the global variable and listens the configured port.")]),t._v(" "),t._m(33),t._v(" "),r("p",[t._v("Returns a function that shuts down the server and destroys the current connections.")]),t._v(" "),t._m(34),t._v(" "),r("p",[t._v("Returns a set of utils.")])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("h1",{attrs:{id:"api-reference"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#api-reference","aria-hidden":"true"}},[this._v("#")]),this._v(" API Reference")])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ul",[r("li",[t._v("strapi\n"),r("ul",[r("li",[r("a",{attrs:{href:"#strapiadmin"}},[t._v(".admin")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapiapp"}},[t._v(".app")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapibootstrap"}},[t._v(".bootstrap()")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapiconfig"}},[t._v(".config")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapicontrollers"}},[t._v(".controllers")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapihook"}},[t._v(".hook")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapikoaMiddlewares"}},[t._v(".koaMiddlewares")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapiload"}},[t._v(".load()")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapilog"}},[t._v(".log")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapimiddleware"}},[t._v(".middleware")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapimodels"}},[t._v(".models")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapiplugins"}},[t._v(".plugins")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapiquery"}},[t._v(".query()")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapireload"}},[t._v(".reload()")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapirouter"}},[t._v(".router")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapiserver"}},[t._v(".server")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapiservices"}},[t._v(".services")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapistart"}},[t._v(".start()")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapistop"}},[t._v(".stop()")])]),t._v(" "),r("li",[r("a",{attrs:{href:"#strapiutils"}},[t._v(".utils")])])])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-admin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-admin","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.admin")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("This object contains the controllers, models, services and configurations contained in the "),e("code",[this._v("./admin")]),this._v(" folder.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-app"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-app","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.app")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-bootstrap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-bootstrap","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.bootstrap")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Returns a "),e("code",[this._v("Promise")]),this._v(". When resolved, it means that the "),e("code",[this._v("./config/functions/bootstrap.js")]),this._v(" has been executed. Otherwise, it throws an error.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"note custom-block"},[e("p",[this._v("You can also access to the bootstrap function through "),e("code",[this._v("strapi.config.functions.boostrap")]),this._v(".")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-config"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-config","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.config")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Returns an object that represents the configurations of the project. Every JavaScript or JSON file located in the "),e("code",[this._v("./config")]),this._v(" folder will be parsed into the "),e("code",[this._v("strapi.config")]),this._v(" object.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-controllers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-controllers","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.controllers")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Returns an object of the controllers wich is available in the project. Every JavaScript file located in the "),e("code",[this._v("./api/**/controllers")]),this._v(" folder will be parsed into the "),e("code",[this._v("strapi.controllers")]),this._v(" object. Thanks to this object, you can access to every controller's actions everywhere in the project.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"note custom-block"},[e("p",[this._v("This object doesn't include the admin's controllers and plugin's controllers.")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-hook"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-hook","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.hook")])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("p",[t._v("Returns an object of the hooks available in the project. Every folder that follows this pattern "),r("code",[t._v("strapi-*")]),t._v(" and located in the "),r("code",[t._v("./node_modules")]),t._v(" or "),r("code",[t._v("/hooks")]),t._v(" folder will be mounted into the "),r("code",[t._v("strapi.hook")]),t._v(" object.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-koamiddlewares"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-koamiddlewares","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.koaMiddlewares")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Returns an object of the Koa middlewares found in the "),e("code",[this._v("./node_modules")]),this._v(" folder of the project. This reference is very useful for the Strapi's core.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-load"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-load","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.load")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Returns a function that parses the configurations, hooks, middlewares and APIs of your app. It also loads the middlewares and hooks with the previously loaded configurations. This method could be useful to update references available through the "),e("code",[this._v("strapi")]),this._v(" global variable without having to restart the server. However, without restarting the server, the new configurations will not be taken in account.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-log"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-log","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.log")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-middleware"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-middleware","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.middleware")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Returns an object of the middlewares available in the project. Every folder in the "),e("code",[this._v("./middlewares")]),this._v(" folder will be also mounted into the "),e("code",[this._v("strapi.middleware")]),this._v(" object.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-models"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-models","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.models")])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("p",[t._v("Returns an object of models available in the project. Every JavaScript or JSON file located in the "),r("code",[t._v("./api/**/models")]),t._v(" folders will be parsed into the "),r("code",[t._v("strapi.models")]),t._v(" object. Also every "),r("code",[t._v("strapi.models.**")]),t._v(" object is merged with the model's instance returned by the ORM (Mongoose, Bookshelf). It allows to call the ORM methods through the "),r("code",[t._v("strapi.models.**")]),t._v(" object (ex: "),r("code",[t._v("strapi.models.users.find()")]),t._v(").")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-plugins"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-plugins","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.plugins")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Returns an object of plugins available in the project. Each plugin object contains the associated controllers, models, services and configurations contained in the "),e("code",[this._v("./plugins/**/")]),this._v(" folder.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-query"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-query","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.query")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-reload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-reload","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.reload")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-router"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-router","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.router")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-server"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-server","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.server")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-services"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-services","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.services")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("Returns an object of services available in the project. Every JavaScript file located in the "),e("code",[this._v("./api/**/services")]),this._v(" folders will be parsed into the "),e("code",[this._v("strapi.services")]),this._v(" object.")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-start"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-start","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.start")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-stop"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-stop","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.stop")])},function(){var t=this.$createElement,e=this._self._c||t;return e("h2",{attrs:{id:"strapi-utils"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strapi-utils","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi.utils")])}],!1,null,null,null);a.options.__file="reference.md";e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/35.76c29241.js b/docs/.vuepress/dist/assets/js/35.76c29241.js new file mode 100644 index 0000000000..c383101a55 --- /dev/null +++ b/docs/.vuepress/dist/assets/js/35.76c29241.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{204:function(e,t,a){"use strict";a.r(t);var s=a(0),r=Object(s.a)({},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"content"},[e._m(0),e._v(" "),a("p",[e._v("Strapi comes with a full featured Command Line Interface (CLI) which lets you scaffold and manage your project in seconds.")]),e._v(" "),a("hr"),e._v(" "),e._m(1),e._v(" "),a("p",[e._v("Create a new project")]),e._v(" "),e._m(2),a("ul",[e._m(3),e._v(" "),e._m(4),e._v(" "),a("li",[e._m(5),e._v(" "),a("p",[e._v("See the "),a("a",{attrs:{href:"https://github.com/strapi/strapi/blob/master/CONTRIBUTING.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("CONTRIBUTING guide"),a("OutboundLink")],1),e._v(" for more details.")])])]),e._v(" "),a("hr"),e._v(" "),e._m(6),e._v(" "),a("p",[e._v("Scaffold a complete API with its configurations, controller, model and service.")]),e._v(" "),e._m(7),e._m(8),e._v(" "),e._m(9),e._v(" "),e._m(10),e._v(" "),a("p",[e._v("Create a new controller")]),e._v(" "),e._m(11),e._m(12),e._v(" "),e._m(13),e._v(" "),e._m(14),e._v(" "),a("p",[e._v("Create a new model")]),e._v(" "),e._m(15),e._m(16),e._v(" "),e._m(17),e._v(" "),e._m(18),e._v(" "),a("p",[e._v("Create a new service")]),e._v(" "),e._m(19),e._m(20),e._v(" "),e._m(21),e._v(" "),e._m(22),e._v(" "),a("p",[e._v("Create a new policy")]),e._v(" "),e._m(23),e._m(24),e._v(" "),e._m(25),e._v(" "),a("p",[e._v("Create a new plugin skeleton.")]),e._v(" "),e._m(26),e._m(27),e._v(" "),a("p",[e._v("Please refer to the "),a("router-link",{attrs:{to:"./../plugin-development/quick-start.html"}},[e._v("plugin develoment documentation")]),e._v(" to know more.")],1),e._v(" "),a("hr"),e._v(" "),e._m(28),e._v(" "),a("p",[e._v("Install a plugin in the project.")]),e._v(" "),e._m(29),e._m(30),e._v(" "),a("blockquote",[a("p",[e._v("Checkout the "),a("a",{attrs:{href:"https://github.com/strapi/strapi/blob/master/CONTRIBUTING.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("CONTRIBUTING guide"),a("OutboundLink")],1),e._v(" for more details about the local Strapi development workflow.")])]),e._v(" "),e._m(31),e._v(" "),a("p",[e._v("Please refer to the "),a("router-link",{attrs:{to:"./../plugin-development/quick-start.html"}},[e._v("plugins documentation")]),e._v(" to know more.")],1),e._v(" "),a("hr"),e._v(" "),e._m(32),e._v(" "),a("p",[e._v("Uninstall a plugin from the project.")]),e._v(" "),e._m(33),e._m(34),e._v(" "),a("p",[e._v("Please refer to the "),a("router-link",{attrs:{to:"./../plugin-development/quick-start.html"}},[e._v("plugins documentation")]),e._v(" to know more.")],1),e._v(" "),a("hr"),e._v(" "),e._m(35),e._v(" "),a("p",[e._v("Print the current globally installed Strapi version.")]),e._v(" "),e._m(36),a("hr"),e._v(" "),e._m(37),e._v(" "),a("p",[e._v("List CLI commands.")]),e._v(" "),e._m(38)])},[function(){var e=this.$createElement,t=this._self._c||e;return t("h1",{attrs:{id:"command-line-interface-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-line-interface-cli","aria-hidden":"true"}},[this._v("#")]),this._v(" Command Line Interface (CLI)")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"strapi-new"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#strapi-new","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi new")])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("strapi new "),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("name"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v("\n\noptions: "),a("span",{attrs:{class:"token punctuation"}},[e._v("[")]),e._v("--dev"),a("span",{attrs:{class:"token operator"}},[e._v("|")]),e._v("--dbclient"),a("span",{attrs:{class:"token operator"}},[e._v("=")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("dbclient"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v(" --dbhost"),a("span",{attrs:{class:"token operator"}},[e._v("=")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("dbhost"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v(" --dbport"),a("span",{attrs:{class:"token operator"}},[e._v("=")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("dbport"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v(" --dbname"),a("span",{attrs:{class:"token operator"}},[e._v("=")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("dbname"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v(" --dbusername"),a("span",{attrs:{class:"token operator"}},[e._v("=")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("dbusername"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v(" --dbpassword"),a("span",{attrs:{class:"token operator"}},[e._v("=")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("dbpassword"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v(" --dbssl"),a("span",{attrs:{class:"token operator"}},[e._v("=")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("dbssl"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v(" --dbauth"),a("span",{attrs:{class:"token operator"}},[e._v("=")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("dbauth"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),a("span",{attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("li",[t("p",[t("strong",[this._v("strapi new ")]),t("br"),this._v("\nGenerates a new project called "),t("strong",[this._v("")]),this._v(" and installs the default plugins through the npm registry.")])])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("li",[a("p",[a("strong",[e._v("strapi new --dev")]),a("br"),e._v("\nGenerates a new project called "),a("strong",[e._v("")]),e._v(" and creates symlinks for the "),a("code",[e._v("./admin")]),e._v(" folder and each plugin inside the "),a("code",[e._v("./plugin")]),e._v(" folder. It means that the Strapi's development workflow has been set up on the machine earlier.")])])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("p",[a("strong",[e._v("strapi new --dbclient= --dbhost= --dbport= --dbname= --dbusername= --dbpassword= --dbssl= --dbauth=")]),a("br"),e._v("\nGenerates a new project called "),a("strong",[e._v("")]),e._v(" and skip the interactive database configuration and initilize with these options. "),a("strong",[e._v("")]),e._v(" can be "),a("code",[e._v("mongo")]),e._v(", "),a("code",[e._v("postgres")]),e._v(", "),a("code",[e._v("mysql")]),e._v(", "),a("code",[e._v("sqlite3")]),e._v(" or "),a("code",[e._v("redis")]),e._v(". "),a("strong",[e._v("")]),e._v(" and "),a("strong",[e._v("")]),e._v(" are optional.")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h2",{attrs:{id:"strapi-generate-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#strapi-generate-api","aria-hidden":"true"}},[this._v("#")]),this._v(" strapi generate:api")])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("strapi generate:api "),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("name"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),a("span",{attrs:{class:"token punctuation"}},[e._v("[")]),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("attribute:type"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),a("span",{attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n\noptions: "),a("span",{attrs:{class:"token punctuation"}},[e._v("[")]),e._v("--tpl "),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("name"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),a("span",{attrs:{class:"token operator"}},[e._v("|")]),e._v("--plugin "),a("span",{attrs:{class:"token operator"}},[e._v("<")]),e._v("name"),a("span",{attrs:{class:"token operator"}},[e._v(">")]),a("span",{attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ul",[a("li",[a("p",[a("strong",[e._v("strapi generate:api ")]),a("br"),e._v("\nGenerates an API called "),a("strong",[e._v("")]),e._v(" in the "),a("code",[e._v("./api")]),e._v(" folder at the root of your project.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("strapi generate:api ")]),a("br"),e._v("\nGenerates an API called "),a("strong",[e._v("")]),e._v(" in the "),a("code",[e._v("./api")]),e._v(" folder at the root of your project. The model will already contain an attribute called "),a("strong",[e._v("")]),e._v(" with the type property set to "),a("strong",[e._v("")]),e._v(".")]),e._v(" "),a("p",[e._v("Example: "),a("code",[e._v("strapi generate:api product name:string description:text price:integer")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("strapi generate:api --plugin ")]),a("br"),e._v("\nGenerates an API called "),a("strong",[e._v("")]),e._v(" in the "),a("code",[e._v("./plugins/")]),e._v(" folder.")]),e._v(" "),a("p",[e._v("Example: "),a("code",[e._v("strapi generate:api product --plugin content-manager")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("strapi generate:api --tpl

>oK^oh%a%pl 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