



Parse Serverは、node.jsを実行できるインフラストラクチャに展開できるオープンソースバックエンドです。 Parse Serverは、Express Webアプリケーションフレームワークで動作します。既存のWebアプリケーションに追加することも、単独で実行することもできます。
Parse Serverの完全なドキュメントは、Wikiで利用できます。 Parse Serverガイドは、開始するのに適した場所です。 APIリファレンスおよびクラウドコードガイドも利用できます。 Parse Server向けの開発に興味がある場合は、開発ガイドがセットアップを支援します。
Parse Platformの開発をサポートしてくれたスポンサーと支援者に感謝します!
Parse Serverは、さまざまなブランチのさまざまなフレーバーで利用できます。
release-5.xxなどのrelease-<version>.xxと名付けられています。 LTSブランチには、プレリリースブランチがありません。 長期サポート(LTS)は、以前のParse Serverメジャーバージョンに提供されます。たとえば、Parse Server 5.xは、Parse Server 6.xがParse Server 7.xに取って代わって新しいLTSバージョンになるまで、セキュリティの更新を受信します。現在のメジャーバージョンはブランチreleaseで公開されていますが、LTSバージョンは、Parse Server 5.x LTSブランチのリリースrelease-#.xx release-5.xx公開されています。
開始する最速かつ最も簡単な方法は、MongoDBとサーバーをローカルで実行することです。
開始する前に、インストールしていることを確認してください。
npmを含むnodejsParse Serverは、node.jsの最新のリリースで継続的にテストされ、互換性を確保します。 node.jsの長期サポート計画に従い、公式にサポートされ、終了日に達していないバージョンに対してのみテストします。
| バージョン | 最新バージョン | 終末期 | 互換性がある |
|---|---|---|---|
| node.js 18 | 18.20.4 | 2025年4月 | ✅はい |
| node.js 20 | 20.15.1 | 2026年4月 | ✅はい |
| node.js 22 | 22.4.1 | 2027年4月 | ✅はい |
Parse Serverは、互換性を確保するために、最新のMongoDBのリリースで継続的にテストされます。 MongoDBサポートスケジュールとMongoDBライフサイクルスケジュールに従い、公式にサポートされ、終了日に達していないバージョンに対してのみテストします。 MongoDB「Rapidリリース」は、これらが次のメジャーバージョンのプレレリースと見なされるため、無視されます。
| バージョン | 最新バージョン | 終末期 | 互換性がある |
|---|---|---|---|
| Mongodb 4.2 | 4.2.25 | 2023年4月 | ✅はい |
| Mongodb 4.4 | 4.4.29 | 2024年2月 | ✅はい |
| Mongodb 5 | 5.0.26 | 2024年10月 | ✅はい |
| Mongodb 6 | 6.0.14 | 2025年7月 | ✅はい |
| Mongodb 7 | 7.0.8 | TDB | ✅はい |
| Mongodb 8 | 8.0.0 | TDB | ✅はい |
Parse Serverは、PostgreSQLとPostGISの最新のリリースで継続的にテストされ、PostGIS Docker画像を使用して互換性を確保します。 PostgreSQLサポートスケジュールとPostGISサポートスケジュールに従い、公式にサポートされ、終了日に達していないバージョンに対してのみテストします。大規模なPostgreSQLサポート期間が5年のため、パースサーバードロップは、公式の終了日の約2年前にサポートをドロップします。
| バージョン | PostGISバージョン | 終末期 | サーバーサポートを解析します | 互換性がある |
|---|---|---|---|---|
| ポストグレス13 | 3.1、3.2、3.3、3.4、3.5 | 2025年11月 | <= 6.x(2023) | ✅はい |
| ポストグレス14 | 3.5 | 2026年11月 | <= 7.x(2024) | ✅はい |
| ポストグレス15 | 3.5 | 2027年11月 | <= 8.x(2025) | ✅はい |
| ポストグレス16 | 3.5 | 2028年11月 | <= 9.x(2026) | ✅はい |
| ポストグレス17 | 3.5 | 2029年11月 | <= 9.x(2026) | ✅はい |
$ npm install -g parse-server mongodb-runner
$ mongodb-runner start
$ parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://localhost/test注:許可の問題( npm ERR! code 'EACCES' )のために-gを使用したインストールが失敗した場合は、このリンクを参照してください。
$ git clone https://github.com/parse-community/parse-server
$ cd parse-server
$ docker build --tag parse-server .
$ docker run --name my-mongo -d mongo$ docker run --name my-parse-server -v config-vol:/parse-server/config -p 1337:1337 --link my-mongo:mongo -d parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://mongo/test注:クラウドコードを使用する場合は、 -v cloud-code-vol:/parse-server/cloud --cloud /parse-server/cloud/main.js上記のコマンドに追加します。 Parse Serverを開始する前に、 main.jsがcloud-code-volディレクトリにあることを確認してください。
任意の文字列をアプリケーションIDおよびマスターキーとして使用できます。これらは、Parseサーバーで認証するためにクライアントによって使用されます。
それでおしまい!これで、マシンでパースサーバーのスタンドアロンバージョンを実行しています。
リモートMongodbを使用していますか? parse-serverを開始するときに、 --databaseURI DATABASE_URIパラメーターを渡します。 Parse Serverの構成の詳細については、こちらをご覧ください。利用可能なオプションの完全なリストについては、 parse-server --helpを実行します。
Parse Serverを実行しているので、最初のオブジェクトを保存する時が来ました。 REST APIを使用しますが、Parse SDKのいずれかを使用して同じことを簡単に実行できます。以下を実行します:
$ curl -X POST
-H " X-Parse-Application-Id: APPLICATION_ID "
-H " Content-Type: application/json "
-d ' {"score":1337,"playerName":"Sean Plott","cheatMode":false} '
http://localhost:1337/parse/classes/GameScoreこれに似た応答を取得する必要があります。
{
"objectId" : "2ntvSpRGIK" ,
"createdAt" : "2016-03-11T23:51:48.050Z"
}このオブジェクトを直接取得できるようになりました(オブジェクトが作成されたときに受け取った実際のobjectIdに2ntvSpRGIK置き換えるようにしてください):
$ curl -X GET
-H " X-Parse-Application-Id: APPLICATION_ID "
http://localhost:1337/parse/classes/GameScore/2ntvSpRGIK // Response
{
"objectId" : " 2ntvSpRGIK " ,
"score" : 1337 ,
"playerName" : " Sean Plott " ,
"cheatMode" : false ,
"updatedAt" : " 2016-03-11T23:51:48.050Z " ,
"createdAt" : " 2016-03-11T23:51:48.050Z "
}ただし、個々のオブジェクトIDの追跡を維持することは理想的ではありません。ほとんどの場合、コレクションでクエリを実行したいと思うでしょう。
$ curl -X GET
-H " X-Parse-Application-Id: APPLICATION_ID "
http://localhost:1337/parse/classes/GameScore // The response will provide all the matching objects within the `results` array:
{
"results" : [
{
"objectId" : " 2ntvSpRGIK " ,
"score" : 1337 ,
"playerName" : " Sean Plott " ,
"cheatMode" : false ,
"updatedAt" : " 2016-03-11T23:51:48.050Z " ,
"createdAt" : " 2016-03-11T23:51:48.050Z "
}
]
}Parse Serverでオブジェクトの保存とクエリの使用の詳細については、Parse Documentationをご覧ください。
Parseは、すべての主要なプラットフォームにSDKを提供します。 Parse Serverガイドを参照して、アプリをサーバーに接続する方法を学びます。
プロジェクトがどのように機能するかをよりよく理解したら、Parse Server Wikiを参照して、詳細なガイドを参照して、Parse Serverを主要なインフラストラクチャプロバイダーに展開してください。 Parse Serverを実行する追加の方法の詳細をご覧ください。
ExpressでParse Serverモジュールを使用し、さまざまなインフラストラクチャプロバイダーに簡単に展開できる基本的なnode.jsアプリケーションを提供しました。
Parse Serverのインスタンスを作成して、新しいExpress Webサイトまたは既存のWebサイトにマウントすることもできます。
const express = require ( 'express' ) ;
const ParseServer = require ( 'parse-server' ) . ParseServer ;
const app = express ( ) ;
const server = new ParseServer ( {
databaseURI : 'mongodb://localhost:27017/dev' , // Connection string for your MongoDB database
cloud : './cloud/main.js' , // Path to your Cloud Code
appId : 'myAppId' ,
masterKey : 'myMasterKey' , // Keep this key secret!
fileKey : 'optionalFileKey' ,
serverURL : 'http://localhost:1337/parse' // Don't forget to change to https if needed
} ) ;
// Start server
await server . start ( ) ;
// Serve the Parse API on the /parse URL prefix
app . use ( '/parse' , server . app ) ;
app . listen ( 1337 , function ( ) {
console . log ( 'parse-server-example running on port 1337.' ) ;
} ) ;使用可能なオプションの完全なリストについては、 parse-server --helpを実行するか、[パーセサーバー構成] [サーバーオプション]をご覧ください。
/parse/healthエンドポイントにリクエストを送信して、Parse Serverの健康を確認してください。
応答は次のようになります:
{
"status" : " ok "
}| 価値 | 説明 |
|---|---|
initialized | サーバーは作成されていますが、 start方法はまだ呼び出されていません。 |
starting | サーバーは起動しています。 |
ok | サーバーが開始され、実行されています。 |
error | スタートアップエラーがありました。詳細については、ログを参照してください。 |
Parse Serverは、次のオプションを使用して構成できます。スタンドアロンのparse-serverを実行するとき、またはparse-server path/to/configuration.jsonを使用してJSON形式で構成ファイルをロードすることにより、これらをパラメーターとして渡すことができます。 ExpressでParse Serverを使用している場合は、これらをParseServerオブジェクトにオプションとして渡すこともできます。
利用可能なオプションの完全なリストについては、 parse-server --helpを実行するか、[ファーセサーバー構成] [サーバーオプション]をご覧ください。
appId (必須) - このサーバーインスタンスでホストするアプリケーションID。任意の文字列を使用できます。移行されたアプリの場合、これはホストされたParseアプリと一致するはずです。masterKey (必須) - ACLセキュリティをオーバーライドするために使用するマスターキー。任意の文字列を使用できます。秘密にしてください!移行されたアプリの場合、これはホストされたParseアプリと一致するはずです。databaseURI (必須) - データベースの接続文字列、つまりmongodb://user:[email protected]/dbname 。パスワードに特殊文字がある場合は、パスワードをエンコードしてください。port - デフォルトのポートは1337です。このパラメーターを指定して、別のポートを使用します。serverURL -urlへのurl server(http://またはhttps://を指定することを忘れないでください)。このURLは、クラウドコードからサーバーを解析するリクエストを行うときに使用されます。cloud - クラウドコードmain.jsファイルへの絶対パス。push - APNSおよびGCMプッシュの構成オプション。プッシュ通知のクイックスタートを参照してください。 Parseで使用されるクライアントキーは、Parse Serverではもはや必要ありません。あなたがまだそれらを要求したい場合、おそらく古いクライアントへのアクセスを拒否できるようにするために、初期化時にキーを設定できます。これらのキーのいずれかを設定するには、構成されたキーのいずれかを提供するためにすべてのリクエストが必要です。
clientKeyjavascriptKeyrestAPIKeydotNetKey| 範囲 | 内部データ | 読み取り専用データ(1) | カスタムデータ | CLP、ACLによって制限されています | 鍵 |
|---|---|---|---|---|---|
| 内部 | r/w | r/w | r/w | いいえ | maintenanceKey |
| マスター | - / - | r/ - | r/w | いいえ | masterKey |
| readonlymaster | - / - | r/ - | r/ - | いいえ | readOnlyMasterKey |
| セッション | - / - | r/ - | r/w | はい | sessionToken |
(1) Parse.Object.createdAt 、 Parse.Object.updatedAt 。
ユーザーの電子メールアドレスを確認し、電子メールでパスワードリセットを有効にするには、電子メールアダプターが必要です。コミュニティが提供および維持している多くの電子メールアダプターがあります。以下は、電子メールアダプターの例を備えた例の構成です。詳細と利用可能なオプションの完全なリストについては、[Parse Server Options] [Server-Options]を参照してください。
const server = ParseServer ( {
... otherOptions ,
// Enable email verification
verifyUserEmails : true ,
// Set email verification token validity to 2 hours
emailVerifyTokenValidityDuration : 2 * 60 * 60 ,
// Set email adapter
emailAdapter : {
module : 'example-mail-adapter' ,
options : {
// Additional adapter options
... mailAdapterOptions
}
} ,
} ) ;Parse Platformによって維持されているオフカルメールアダプター:
コミュニティが貢献した電子メールアダプター:
セキュリティ要件を満たすパスワードとアカウントポリシーを設定します。以下は構成の例です。詳細と利用可能なオプションの完全なリストについては、[Parse Server Options] [Server-Options]を参照してください。
const server = ParseServer ( {
... otherOptions ,
// The account lock policy
accountLockout : {
// Lock the account for 5 minutes.
duration : 5 ,
// Lock an account after 3 failed log-in attempts
threshold : 3 ,
// Unlock the account after a successful password reset
unlockOnPasswordReset : true ,
} ,
// The password policy
passwordPolicy : {
// Enforce a password of at least 8 characters which contain at least 1 lower case, 1 upper case and 1 digit
validatorPattern : / ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,}) / ,
// Do not allow the username as part of the password
doNotAllowUsername : true ,
// Do not allow to re-use the last 5 passwords when setting a new password
maxPasswordHistory : 5 ,
} ,
} ) ; 注意、これは生産に適していない可能性のある実験機能です。
カスタムルートにより、既存のパスワードリセットと電子メール検証機能と同様に、Webページでユーザーフローを構築できます。カスタムルートは、Parse Server構成のpagesオプションで定義されます。
const api = new ParseServer ( {
... otherOptions ,
pages : {
enableRouter : true , // Enables the experimental feature; required for custom routes
customRoutes : [ {
method : 'GET' ,
path : 'custom_route' ,
handler : async request => {
// custom logic
// ...
// then, depending on the outcome, return a HTML file as response
return { file : 'custom_page.html' } ;
}
} ]
}
}上記のルートは、 GETリクエストを送信することで呼び出すことができます: https://[parseServerPublicUrl]/[parseMount]/[pagesEndpoint]/[appId]/[customRoute]
handlerはrequestを受信し、 pages.pagesPathからcustom_page.htmlウェブページを返信します。pagespathディレクトリは応答として。この方法でカスタムルートを構築する利点は、ページのローカリゼーションやダイナミックなプレースホルダーなど、Parse Serverの組み込み機能を自動的に使用することです。
次のパスは、Parse Serverの組み込み機能によって既に使用されているため、カスタムルートでは使用できません。 pathとmethodの同じ組み合わせを備えたカスタムルートは無視されます。
| パス | HTTPメソッド | 特徴 |
|---|---|---|
verify_email | GET | 電子メールの確認 |
resend_verification_email | POST | 電子メールの確認 |
choose_password | GET | パスワードリセット |
request_password_reset | GET | パスワードリセット |
request_password_reset | POST | パスワードリセット |
| パラメーター | オプション | タイプ | デフォルト値 | 値の例 | 環境変数 | 説明 |
|---|---|---|---|---|---|---|
pages | はい | Object | undefined | - | PARSE_SERVER_PAGES | パスワードリセットや電子メールの確認などのページのオプション。 |
pages.enableRouter | はい | Boolean | false | - | PARSE_SERVER_PAGES_ENABLE_ROUTER | ページルーターを有効にする必要がある場合はtrueです。これは、任意のページオプションが有効になるために必要です。注意、これは生産に適していない可能性のある実験機能です。 |
pages.customRoutes | はい | Array | [] | - | PARSE_SERVER_PAGES_CUSTOM_ROUTES | カスタムルート。ルートは、ここで定義されている順序で追加されます。これは、リクエストが順序付けられた方法でルートを通過するため、考慮する必要があります。カスタムルートは、パスワードリセットや電子メールの確認などのビルドインルートの後に通過します。 |
pages.customRoutes.method | String | - | GET 、 POST | - | カスタムルートのHTTPメソッド。 | |
pages.customRoutes.path | String | - | custom_page | - | カスタムルートのパス。 methodが異なる場合、同じパスが使用できることに注意してください。たとえば、Path custom_pageは、HTTPリクエストメソッドに応じて呼び出される2つのルート、 GET and POST Routeを持つことができます。 | |
pages.customRoutes.handler | AsyncFunction | - | async () => { ... } | - | ルートがHTTP要求と一致するときに呼び出されるルートハンドラー。ハンドラーがページを返さない場合、リクエストは404がNot found.応答。 |
アプリのデフォルトページを変更し、ユーザーを別のパスまたはドメインにリダイレクトすることができます。
const server = ParseServer ( {
... otherOptions ,
customPages : {
passwordResetSuccess : "http://yourapp.com/passwordResetSuccess" ,
verifyEmailSuccess : "http://yourapp.com/verifyEmailSuccess" ,
parseFrameURL : "http://yourapp.com/parseFrameURL" ,
linkSendSuccess : "http://yourapp.com/linkSendSuccess" ,
linkSendFail : "http://yourapp.com/linkSendFail" ,
invalidLink : "http://yourapp.com/invalidLink" ,
invalidVerificationLink : "http://yourapp.com/invalidVerificationLink" ,
choosePassword : "http://yourapp.com/choosePassword"
}
} ) 環境変数を使用して、Parse Serverを構成できます。
PORT
PARSE_SERVER_APPLICATION_ID
PARSE_SERVER_MASTER_KEY
PARSE_SERVER_DATABASE_URI
PARSE_SERVER_URL
PARSE_SERVER_CLOUDデフォルトのポートは1337です。別のポートを使用するには、ポート環境変数を設定します。
$ PORT=8080 parse-server --appId APPLICATION_ID --masterKey MASTER_KEY構成可能な環境変数の完全なリストについては、 parse-server --helpまたはParse Serverの構成をご覧ください。
すべての公式アダプターは、npm(@parse)のスコープパッケージとして配布されます。
いくつかの適切にメンテナンスされたアダプターは、Parse Server Modules組織でも利用できます。
また、NPMで検索することにより、コミュニティが管理するアダプターをさらに見つけることができます。
Parse Serverを使用すると、ファイルをホストするときに開発者が複数のオプションから選択できます。
GridFSBucketAdapter mongodbに裏付けられていますS3Adapter -Amazon S3が裏付けていますGCSAdapterこれはGoogle Cloud Storageに裏付けられていますFSAdapterローカルファイルストレージGridFSBucketAdapterはデフォルトで使用されており、セットアップは必要ありませんが、Amazon S3、Google Cloudストレージ、またはローカルファイルストレージの使用に興味がある場合は、Parse Serverガイドで追加の構成情報を入手できます。
注意、これは生産に適していない可能性のある実験機能です。
この機能は、通常、ネットワークの問題またはモバイルオペレーティングシステムのネットワークアダプターアクセス制限が原因で、ペルースサーバーによって複数回受信される同一の要求を推定します。
同一の要求は、リクエストヘッダーX-Parse-Request-Idによって識別されます。したがって、クライアントのリクエストには、このヘッダーを適用するためにこのヘッダーを含める必要があります。このヘッダーを含まないリクエストは、重複排除はできず、通常はParse Serverによって処理されます。これは、この機能が有効になっている場合、この機能をこのヘッダーなしでリクエストを処理するため、クライアントにこの機能を展開することはシームレスです。
この機能は、クライアント側でヘッダーを送信し、ヘッダーを処理するためにサーバーで有効にする必要があります。特定のParse SDKドキュメントを参照して、機能がまだサポートされているかどうかを確認してください。
重複排除は、オブジェクトの作成と更新( POSTとPUT投稿)に対してのみ行われます。これらの操作はすでに定義上等容量であるため、オブジェクトの発見と削除(リクエストGETおよびDELETE )のために重複排除は行われません。
let api = new ParseServer({
idempotencyOptions: {
paths: [".*"], // enforce for all requests
ttl: 120 // keep request IDs for 120s
}
}
| パラメーター | オプション | タイプ | デフォルト値 | 値の例 | 環境変数 | 説明 |
|---|---|---|---|---|---|---|
idempotencyOptions | はい | Object | undefined | parse_server_experimental_idempotency_options | これを設定すると、指定されたパスの実施能力が可能になります。 | |
idempotencyOptions.paths | はい | Array<String> | [] | .* (すべてのパス、以下の例が含まれています)、functions/.* (すべての関数)、jobs/.* (すべてのジョブ)、classes/.* (すべてのクラス)、functions/.* (すべての関数)、users (ユーザー作成 /更新)、installations (インストールの作成 /更新) | parse_server_experimental_idempotency_paths | リクエストの延長を有効にするための要求パスを一致させる必要がある一連のパスパターン。マウントパスを含めてはなりません。たとえば、リクエストパス/parse/functions/myFunctionと一致するため、パスパターンfunctions/myFunctionを指定します。リクエストパスの後続のスラッシュは無視されます。たとえば、パスパターンfunctions/myFunction 、 /parse/functions/myFunctionおよび/parse/functions/myFunction/両方と一致します。 |
idempotencyOptions.ttl | はい | Integer | 300 | 60 (60秒) | parse_server_experimental_idempotency_ttl | その後の数秒での期間は、要求レコードがデータベースから破棄されます。ネットワークの問題による重複リクエストは、数秒までミリ秒以内に到着すると予想されます。この値は0より大きくなければなりません。 |
この機能をPostgresで使用するには、PGADMINまたは同様を使用してCRONジョブを作成して、有効期限が切れたiDempotencyレコードを削除するpostgres関数idempotency_delete_expired_records()を呼び出す必要があります。以下の例を見つけることができます。スクリプトに、Parse Serverと同じポストグレスにログインするのと同じ特権があることを確認してください。
#! /bin/bash
set -e
psql -v ON_ERROR_STOP=1 --username " $POSTGRES_USER " --dbname " $POSTGRES_DB " << - EOSQL
SELECT idempotency_delete_expired_records();
EOSQL
exec " $@ "上記のスクリプトに名前が付けられていると仮定すると、 parse_idempotency_delete_expired_records.sh 、2分ごとにスクリプトを実行するCronジョブは次のように見える場合があります。
2 * * * * /root/parse_idempotency_delete_expired_records.sh > /dev/null 2>&1 注意、これは生産に適していない可能性のある実験機能です。
カスタムページと機能ページ(例:パスワードリセット、電子メール検証など)は、Parse Server構成のpagesオプションでローカライズできます。
const api = new ParseServer ( {
... otherOptions ,
pages : {
enableRouter : true , // Enables the experimental feature; required for localization
enableLocalization : true ,
}
}ローカリゼーションは、リクエストサプライのlocaleパラメーターをローカライズされたページコンテンツと一致させることで実現されます。ロケールは、次のキーを使用して、リクエストクエリ、ボディ、またはヘッダーのいずれかで提供できます。
localelocalex-parse-page-param-localeたとえば、クエリのロケールパラメーターとのパスワードリセットリンクは、次のようになります。
http://example.com/parse/apps/[appId]/request_password_reset?token=[token]&username=[username]&locale=de-AT
pages.pagesPathディレクトリ内のページでのみ使用できます。pages.customUrlsのローカリゼーション(パスワードリセット、電子メール検証)が無効になります。.htmlファイルのみがローカリゼーションの場合に考慮されます。ページは2つの方法でローカライズできます。
ページは、ファイルがロケールまたは言語にちなんで名付けられたサブディレクトリに配置されているディレクトリ構造に対応するファイルを使用してローカライズされます。ベースディレクトリ内のファイルはデフォルトファイルです。
ディレクトリ構造の例:
root /
├── public / // pages base path
│ ├── example . html // default file
│ └── de / // de language folder
│ │ └── example . html // de localized file
│ └── de - AT / // de-AT locale folder
│ │ └── example . html // de-AT localized fileファイルは、次の順序でロケールと一致します。
de-ATのロケールde-ATマッチファイル。de-CHフォルダーdeのファイルと一致します。構成例:
const api = new ParseServer ( {
... otherOptions ,
pages : {
enableRouter : true , // Enables the experimental feature; required for localization
enableLocalization : true ,
customUrls : {
passwordReset : 'https://example.com/page.html'
}
}
}長所:
短所:
ページは、HTMLファイルにプレースホルダーを追加し、プレースホルダーに埋めるための翻訳を含むJSONリソースを提供することによりローカライズされます。
ディレクトリ構造の例:
root /
├── public / // pages base path
│ ├── example . html // the page containing placeholders
├── private / // folder outside of public scope
│ └── translations . json // JSON resource fileJSONリソースファイルは、i18Nextの構文を大まかに追跡します。これは、翻訳プラットフォームでサポートされることが多い構文であり、翻訳を簡単に管理し、パーセサーバーで使用するためにエクスポートし、さらにはこのワークフローを自動化します。
例JSONコンテンツ:
{
"en" : { // resource for language `en` (English)
"translation" : {
"greeting" : " Hello! "
}
},
"de" : { // resource for language `de` (German)
"translation" : {
"greeting" : " Hallo! "
}
}
"de-AT" : { // resource for locale `de-AT` (Austrian German)
"translation" : {
"greeting" : " Servus! "
}
}
}構成例:
const api = new ParseServer ( {
... otherOptions ,
pages : {
enableRouter : true , // Enables the experimental feature; required for localization
enableLocalization : true ,
localizationJsonPath : './private/localization.json' ,
localizationFallbackLocale : 'en'
}
}長所:
短所:
appIdなどの機能に関連するデフォルトパラメーターやJSONリソースを介して提供される翻訳に加えて、ルーター構成の一部としてカスタムダイナミックプレースホルダーを定義することができます。これは、ローカリゼーションとは無関係に機能し、 enableLocalizationが無効になっている場合にも機能します。
構成例:
const api = new ParseServer ( {
... otherOptions ,
pages : {
enableRouter : true , // Enables the experimental feature; required for localization
placeholders : {
exampleKey : 'exampleValue'
}
}
}プレースホルダーは、動的なプレースホルダー値を可能にするために、 localeやその他の機能関連のパラメーターを通過させて、関数または非同期関数として提供することもできます。
const api = new ParseServer ( {
... otherOptions ,
pages : {
enableRouter : true , // Enables the experimental feature; required for localization
placeholders : async ( params ) => {
const value = await doSomething ( params . locale ) ;
return {
exampleKey : value
} ;
}
}
} 次のパラメーターとプレースホルダーキーは、パスワードリセットや電子メールの確認などの機能に関連するため、予約されています。それらは、JSONリソースの翻訳キーとして、または構成内の手動で定義されたプレースホルダーキーとして使用しないでください: appId 、 appName 、 email 、 error 、 locale 、 publicServerUrl 、 token 、 username 。
| パラメーター | オプション | タイプ | デフォルト値 | 値の例 | 環境変数 | 説明 |
|---|---|---|---|---|---|---|
pages | はい | Object | undefined | - | PARSE_SERVER_PAGES | パスワードリセットや電子メールの確認などのページのオプション。 |
pages.enableRouter | はい | Boolean | false | - | PARSE_SERVER_PAGES_ENABLE_ROUTER | ページルーターを有効にする必要がある場合はtrueです。これは、任意のページオプションが有効になるために必要です。注意、これは生産に適していない可能性のある実験機能です。 |
pages.enableLocalization | はい | Boolean | false | - | PARSE_SERVER_PAGES_ENABLE_LOCALIZATION | ページをローカライズする必要がある場合は真です。これは、カスタムページリダイレクトに影響を与えません。 |
pages.localizationJsonPath | はい | String | undefined | ./private/translations.json | PARSE_SERVER_PAGES_LOCALIZATION_JSON_PATH | ローカリゼーションのためのJSONファイルへのパス。翻訳は、ロケールに応じてテンプレートプレースホルダーを埋めるために使用されます。 |
pages.localizationFallbackLocale | はい | String | en | en 、 en-GB 、 default | PARSE_SERVER_PAGES_LOCALIZATION_FALLBACK_LOCALE | 指定されたロケールに一致する翻訳が提供されていない場合のローカリゼーションのためのフォールバックロケール。これは、JSONファイルを介して翻訳リソースを提供する場合にのみ関連します。 |
pages.placeholders | はい | Object 、 Function 、 AsyncFunction | undefined | { exampleKey: 'exampleValue' } | PARSE_SERVER_PAGES_PLACEHOLDERS | ページに記入されるプレースホルダーキーと値。これは、単純なオブジェクトまたはコールバック関数になる可能性があります。 |
pages.forceRedirect | はい | Boolean | false | - | PARSE_SERVER_PAGES_FORCE_REDIRECT | 応答が常にリダイレクトであり、コンテンツではない場合はtrueです、応答タイプがリクエストタイプに依存する必要がある場合( false ( GET request-> content response; POST request-> redirect respons)。 |
pages.pagesPath | はい | String | ./public | ./files/pages ../../pages | PARSE_SERVER_PAGES_PAGES_PATH | ページディレクトリへのパス。これは、静的エンドポイント/apps指す場所も定義します。 |
pages.pagesEndpoint | はい | String | apps | - | PARSE_SERVER_PAGES_PAGES_ENDPOINT | ページのAPIエンドポイント。 |
pages.customUrls | はい | Object | {} | { passwordReset: 'https://example.com/page.html' } | PARSE_SERVER_PAGES_CUSTOM_URLS | カスタムページへのURL |
pages.customUrls.passwordReset | はい | String | password_reset.html | - | PARSE_SERVER_PAGES_CUSTOM_URL_PASSWORD_RESET | パスワードリセット用のカスタムページへのURL。 |
pages.customUrls.passwordResetSuccess | はい | String | password_reset_success.html | - | PARSE_SERVER_PAGES_CUSTOM_URL_PASSWORD_RESET_SUCCESS | パスワードリセットのためのカスタムページへのURL->成功。 |
pages.customUrls.passwordResetLinkInvalid | はい | String | password_reset_link_invalid.html | - | PARSE_SERVER_PAGES_CUSTOM_URL_PASSWORD_RESET_LINK_INVALID | パスワードリセットのカスタムページへのURL-> link invalid。 |
pages.customUrls.emailVerificationSuccess | はい | String | email_verification_success.html | - | PARSE_SERVER_PAGES_CUSTOM_URL_EMAIL_VERIFICATION_SUCCESS | 電子メール検証のためのカスタムページへのURL->成功。 |
pages.customUrls.emailVerificationSendFail | はい | String | email_verification_send_fail.html | - | PARSE_SERVER_PAGES_CUSTOM_URL_EMAIL_VERIFICATION_SEND_FAIL | 電子メールの検証のためのカスタムページへのURL - >リンクは失敗を送信します。 |
pages.customUrls.emailVerificationSendSuccess | はい | String | email_verification_send_success.html | - | PARSE_SERVER_PAGES_CUSTOM_URL_EMAIL_VERIFICATION_SEND_SUCCESS | 電子メール検証のためのカスタムページへのURL->再送信リンク - >成功。 |
pages.customUrls.emailVerificationLinkInvalid | はい | String | email_verification_link_invalid.html | - | PARSE_SERVER_PAGES_CUSTOM_URL_EMAIL_VERIFICATION_LINK_INVALID | 電子メール検証のためのカスタムページへのURL-> link invalid。 |
pages.customUrls.emailVerificationLinkExpired | はい | String | email_verification_link_expired.html | - | PARSE_SERVER_PAGES_CUSTOM_URL_EMAIL_VERIFICATION_LINK_EXPIRED | 電子メール検証のためのカスタムページへのURL->リンクの有効期限が切れました。 |
パーセサーバーは、デフォルトでログを記録します。
ログは、解析ダッシュボードでも表示できます。
各リクエストと応答を記録したいですか? parse-serverを開始するときに、 VERBOSE環境変数を設定します。使用法: - VERBOSE='1' parse-server --appId APPLICATION_ID --masterKey MASTER_KEY
ログを別のフォルダーに配置したいですか? PARSE_SERVER_LOGS_FOLDER環境変数parse-server渡します。使用法: PARSE_SERVER_LOGS_FOLDER='<path-to-logs-folder>' parse-server --appId APPLICATION_ID --masterKey MASTER_KEY
特定のレベルを記録したいですか? parse-serverを開始するときにlogLevelパラメーターを渡します。使用法: parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --logLevel LOG_LEVEL
新しいラインを区切られたJSONエラーログ(CloudWatch、Google Cloudロギングなどによる消費用)? parse-serverを開始するときに、 JSON_LOGS環境変数を渡します。使用法: JSON_LOGS='1' parse-server --appId APPLICATION_ID --masterKey MASTER_KEY
非難の概要と計画された壊れた変更については、非推奨計画を参照してください。
ライブクエリは、リアルタイムのリアクティブアプリケーションで使用されることを目的としています。このアプリケーションでは、従来のクエリパラダイムを使用するだけで、応答時間の増加や高いネットワークおよびサーバーの使用など、いくつかの問題を引き起こす可能性があります。ライブクエリは、オンラインゲーム、メッセージングクライアント、共有To Doリストで発生する(ただし、これらに限定されない)データベースからの新しいデータを含むページを継続的に更新する必要がある場合に使用する必要があります。
ライブクエリガイド、ライブクエリサーバーセットアップガイド、ライブクエリプロトコル仕様をご覧ください。 Scalability(推奨)のために、スタンドアロンサーバーまたは複数のインスタンスをセットアップできます。
Facebookが開発したGraphQLは、APIのオープンソースデータクエリと操作言語です。従来のREST APIに加えて、Parse Serverは現在のアプリケーションスキーマに基づいてGraphQL APIを自動的に生成します。 Parse Serverを使用すると、クラウドコード機能にバインドできるカスタムGraphQLクエリと突然変異を定義することもできます。
Parse GraphQL APIを実行する最も簡単な方法は、CLIを使用することです。
$ npm install -g parse-server mongodb-runner
$ mongodb-runner start
$ parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://localhost/test --publicServerURL http://localhost:1337/parse --mountGraphQL --mountPlaygroundサーバーを起動した後、http:// localhost:1337/playground in your browserにアクセスして、GraphQL APIで再生を開始できます。
注:使用しないでください-MountPlaygroundオプションで生産。 Parse Dashboardには、GraphQLプレイグラウンドが組み込まれており、生産アプリに推奨されるオプションです。
Dockerコンテナ内でParse GraphQL APIを実行することもできます。
$ git clone https://github.com/parse-community/parse-server
$ cd parse-server
$ docker build --tag parse-server .
$ docker run --name my-mongo -d mongo$ docker run --name my-parse-server --link my-mongo:mongo -v config-vol:/parse-server/config -p 1337:1337 -d parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://mongo/test --publicServerURL http://localhost:1337/parse --mountGraphQL --mountPlayground注:クラウドコードを使用する場合は、 -v cloud-code-vol:/parse-server/cloud --cloud /parse-server/cloud/main.js上記のコマンドに追加します。 Parse Serverを開始する前に、 main.jsがcloud-code-volディレクトリにあることを確認してください。
サーバーを起動した後、http:// localhost:1337/playground in your browserにアクセスして、GraphQL APIで再生を開始できます。
注:使用しないでください-MountPlaygroundオプションで生産。 Parse Dashboardには、GraphQLプレイグラウンドが組み込まれており、生産アプリに推奨されるオプションです。
GraphQL APIをExpress.jsアプリケーションとREST APIまたはSOLOにマウントすることもできます。最初に新しいプロジェクトを作成し、必要な依存関係をインストールする必要があります。
$ mkdir my-app
$ cd my-app
$ npm install parse-server express --save次に、次のコンテンツでindex.jsファイルを作成します。
const express = require ( 'express' ) ;
const { ParseServer , ParseGraphQLServer } = require ( 'parse-server' ) ;
const app = express ( ) ;
const parseServer = new ParseServer ( {
databaseURI : 'mongodb://localhost:27017/test' ,
appId : 'APPLICATION_ID' ,
masterKey : 'MASTER_KEY' ,
serverURL : 'http://localhost:1337/parse' ,
publicServerURL : 'http://localhost:1337/parse'
} ) ;
const parseGraphQLServer = new ParseGraphQLServer (
parseServer ,
{
graphQLPath : '/graphql' ,
playgroundPath : '/playground'
}
) ;
app . use ( '/parse' , parseServer . app ) ; // (Optional) Mounts the REST API
parseGraphQLServer . applyGraphQL ( app ) ; // Mounts the GraphQL API
parseGraphQLServer . applyPlayground ( app ) ; // (Optional) Mounts the GraphQL Playground - do NOT use in Production
await parseServer . start ( ) ;
app . listen ( 1337 , function ( ) {
console . log ( 'REST API running on http://localhost:1337/parse' ) ;
console . log ( 'GraphQL API running on http://localhost:1337/graphql' ) ;
console . log ( 'GraphQL Playground running on http://localhost:1337/playground' ) ;
} ) ;そして最後にあなたのアプリを起動します:
$ npx mongodb-runner start
$ node index.jsアプリを起動した後、http:// localhost:1337/browserの遊び場にアクセスして、GraphQL APIで再生を開始できます。
注:生産にGraphQLの遊び場を取り付けないでください。 Parse Dashboardには、GraphQLプレイグラウンドが組み込まれており、生産アプリに推奨されるオプションです。
以下を実行します:
query Health {
health
}次の回答を受け取る必要があります。
{
"data" : {
"health" : true
}
}アプリケーションにはまだスキーマがないため、 createClass変異を使用してファーストクラスを作成できます。以下を実行します:
mutation CreateClass {
createClass (
name : " GameScore "
schemaFields : {
addStrings : [{ name : " playerName " }]
addNumbers : [{ name : " score " }]
addBooleans : [{ name : " cheatMode " }]
}
) {
name
schemaFields {
name
__typename
}
}
}次の回答を受け取る必要があります。
{
"data" : {
"createClass" : {
"name" : " GameScore " ,
"schemaFields" : [
{
"name" : " objectId " ,
"__typename" : " SchemaStringField "
},
{
"name" : " updatedAt " ,
"__typename" : " SchemaDateField "
},
{
"name" : " createdAt " ,
"__typename" : " SchemaDateField "
},
{
"name" : " playerName " ,
"__typename" : " SchemaStringField "
},
{
"name" : " score " ,
"__typename" : " SchemaNumberField "
},
{
"name" : " cheatMode " ,
"__typename" : " SchemaBooleanField "
},
{
"name" : " ACL " ,
"__typename" : " SchemaACLField "
}
]
}
}
}Parse Serverは、作成したファーストクラスから学習し、スキーマにGameScoreクラスができました。これで、自動生成された操作の使用を開始できます!
以下を実行して、最初のオブジェクトを作成します。
mutation CreateGameScore {
createGameScore (
fields : {
playerName : " Sean Plott "
score : 1337
cheatMode : false
}
) {
id
updatedAt
createdAt
playerName
score
cheatMode
ACL
}
}これに類似した応答を受信する必要があります。
{
"data" : {
"createGameScore" : {
"id" : " XN75D94OBD " ,
"updatedAt" : " 2019-09-17T06:50:26.357Z " ,
"createdAt" : " 2019-09-17T06:50:26.357Z " ,
"playerName" : " Sean Plott " ,
"score" : 1337 ,
"cheatMode" : false ,
"ACL" : null
}
}
}この新しいクラスのクエリを実行することもできます。
query GameScores {
gameScores {
results {
id
updatedAt
createdAt
playerName
score
cheatMode
ACL
}
}
}これに類似した応答を受信する必要があります。
{
"data" : {
"gameScores" : {
"results" : [
{
"id" : " XN75D94OBD " ,
"updatedAt" : " 2019-09-17T06:50:26.357Z " ,
"createdAt" : " 2019-09-17T06:50:26.357Z " ,
"playerName" : " Sean Plott " ,
"score" : 1337 ,
"cheatMode" : false ,
"ACL" : null
}
]
}
}
}Parse GraphQL Serverを使用すると、自動生成されたものとマージされる独自のクエリと突然変異を備えたカスタムGraphQLスキーマを作成できます。通常のクラウドコード関数を使用してこれらの操作を解決できます。
カスタムスキーマの作成を開始するには、 schema.graphqlファイルをコードし、 --graphQLSchemaおよび--cloudオプションを使用してparseサーバーを初期化する必要があります。
$ parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://localhost/test --publicServerURL http://localhost:1337/parse --cloud ./cloud/main.js --graphQLSchema ./cloud/schema.graphql --mountGraphQL --mountPlaygroundschema.graphqlおよびmain.jsファイルには、以下のコードを使用します。次に、パースサーバーを再起動します。
# schema.graphql
extend type Query {
hello : String ! @resolve
} // main.js
Parse . Cloud . define ( 'hello' , async ( ) => {
return 'Hello world!' ;
} ) ;GraphQL Playgroundを使用してカスタムクエリを実行できるようになりました。
query {
hello
}以下の回答を受け取る必要があります。
{
"data" : {
"hello" : " Hello world! "
}
}Parse GraphQLガイドは、Parse GraphQL APIの使用方法を学ぶための非常に優れたソースです。
また、GraphQLの遊び場の中に非常に強力なツールがあります。 GraphQLの遊び場の右側を見てください。 DOCSとSCHEMAメニューが表示されます。それらは、アプリケーションスキーマを分析することにより自動的に生成されます。それらを参照して、Parse GraphQL APIでできるすべてのことについて詳しく学んでください。
さらに、GraphQL Learn Sectionは、GraphQL言語のパワーについてさらに学ぶための非常に優れたソースです。
寄稿ガイドをご覧ください。
このプロジェクトは、貢献しているすべての人々のおかげで存在します...私たちはこのリストであなたの顔を見たいです!
スポンサーになることにより、このプロジェクトをサポートします。あなたのロゴは、あなたのウェブサイトへのリンクでここに表示されます。スポンサーになりましょう!
毎月の寄付で私たちをサポートし、私たちが活動を続けるのを助けてください。支援者になりましょう!
[server-options] http://parseplatform.org/parse-server/api/release/parseserveroptions.html