



구문 분석 대시 보드는 구문 분석 서버 앱을 관리하기위한 독립형 대시 보드입니다.
npm 에서 대시 보드를 설치하십시오.
npm install -g parse-dashboard
앱 ID, 마스터 키, URL 및 이름을 제공하여 단일 명령으로 앱의 대시 보드를 시작할 수 있습니다.
parse-dashboard --dev --appId yourAppId --masterKey yourMasterKey --serverURL "https://example.com/parse" --appName optionalName
--host 호스트, --port 및 --mountPath 경로 옵션을 구문 분석 보드에 제공하여 호스트, 포트 및 마운트 경로를 설정할 수 있습니다. 원하는 것을 앱 이름으로 사용하거나 앱 ID가 사용됩니다.
--dev 매개 변수는 생산 준비 보안 기능을 비활성화합니다. 이 매개 변수는 Docker에서 구문 분석 대시 보드를 실행할 때 유용합니다. 이 매개 변수를 사용하면 다음과 같습니다.
allowInsecureHTTP 우회하여 어디서나 불안정한 HTTP 연결을 허용합니다.masterKey 암호화없이 ClearText로 전송하도록하십시오.
켈 프로덕션 환경에서 구문 분석 대시 보드를 배포 할 때이 매개 변수를 사용하지 마십시오.
대시 보드를 시작한 후 브라우저에서 http : // localhost : 4040을 방문 할 수 있습니다.

구문 분석 대시 보드는 다음 구문 분석 서버 버전과 호환됩니다.
| 대시 보드 버전을 구문 분석합니다 | 구문 분석 서버 버전 | 호환 가능 |
|---|---|---|
| > = 1.0 | > = 2.1.4 | ✅ 예 |
구문 분석 대시 보드는 가장 최근의 Node.js 릴리스로 지속적으로 테스트되어 호환성을 보장합니다. 우리는 Node.js 장기 지원 계획을 따르고 공식적으로 지원되고 수명이 끝나지 않은 버전에 대해서만 테스트합니다.
| 버전 | 최신 버전 | 수명이 끝났습니다 | 호환 가능 |
|---|---|---|---|
| node.js 18 | 18.20.4 | 2025 년 5 월 | ✅ 예 |
| node.js 20 | 20.18.0 | 2026 년 4 월 | ✅ 예 |
| node.js 22 | 22.9.0 | 2027 년 4 월 | ✅ 예 |
| 매개 변수 | 유형 | 선택 과목 | 기본 | 예 | 설명 |
|---|---|---|---|---|---|
apps | 배열 <객체> | 아니요 | - | [{ ... }, { ... }] | 대시 보드 용으로 구성된 앱. |
infoPanel | 배열 <객체> | 예 | - | [{ ... }, { ... }] | 정보 패널 구성. |
infoPanel[*].title | 끈 | 아니요 | - | User Details | 패널 제목. |
infoPanel[*].classes | 배열 <문자열> | 아니요 | - | ["_User"] | 정보 패널을 표시 해야하는 클래스. |
infoPanel[*].cloudCodeFunction | 끈 | 아니요 | - | getUserDetails | 데이터 브라우저에서 선택한 객체를 수신 한 클라우드 코드 기능은 정보 패널에 표시 할 응답을 반환합니다. |
apps.scripts | 배열 <객체> | 예 | [] | [{ ... }, { ... }] | 해당 앱에 대해 실행할 수있는 스크립트. |
apps.scripts.title | 끈 | 아니요 | - | 'Delete User' | 데이터 브라우저 컨텍스트 메뉴에 표시 될 제목 및 스크립트 실행 확인 대화 상자. |
apps.scripts.classes | 배열 <문자열> | 아니요 | - | ['_User'] | 스크립트를 실행할 수있는 구문 분석 객체의 클래스. |
apps.scripts.cloudCodeFunction | 끈 | 아니요 | - | 'deleteUser' | 구문 분석 클라우드 기능의 이름. |
apps.scripts.showConfirmationDialog | 부 | 예 | false | true | 스크립트가 실행되기 전에 확인 대화 상자를 표시 해야하는 true , 스크립트를 즉시 실행 해야하는 경우 false . |
apps.scripts.confirmationDialogStyle | 끈 | 예 | info | critical | 확인 대화 상자의 스타일. 유효한 값 : info (파란색 스타일), critical (빨간색 스타일). |
apps.cloudConfigHistoryLimit | 정수 | 예 | 100 | 100 | 클라우드 구성 변경 기록에 저장 해야하는 역사적 값의 수. 유효한 값 : 0 ... Number.MAX_SAFE_INTEGER . |
구성 파일로 명령 줄에서 대시 보드를 시작할 수도 있습니다. 이렇게하려면 로컬 Parse Dashboard 디렉토리 계층 구조 내에서 parse-dashboard-config.json 이라는 새 파일을 만듭니다. 파일은 다음 형식과 일치해야합니다.
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " MyApp "
}
]
} 그런 다음 parse-dashboard --config parse-dashboard-config.json 사용하여 대시 보드를 시작할 수 있습니다.
parse-dashboard명령을 사용하여 앱을 시작할 때만 작동합니다.
환경 변수를 사용하여 대시 보드를 구성하는 데 사용할 수있는 두 가지 방법도 있습니다.
PARSE_DASHBOARD_CONFIG 에서 전체 JSON 구성을 제공하면 구성 파일과 마찬가지로 구문 분석됩니다.
각 구성 옵션을 개별적으로 정의 할 수도 있습니다.
HOST: "0.0.0.0"
PORT: "4040"
MOUNT_PATH: "/"
PARSE_DASHBOARD_TRUST_PROXY: undefined // Or "1" to trust connection info from a proxy's X-Forwarded-* headers
PARSE_DASHBOARD_SERVER_URL: "http://localhost:1337/parse"
PARSE_DASHBOARD_MASTER_KEY: "myMasterKey"
PARSE_DASHBOARD_APP_ID: "myAppId"
PARSE_DASHBOARD_APP_NAME: "MyApp"
PARSE_DASHBOARD_USER_ID: "user1"
PARSE_DASHBOARD_USER_PASSWORD: "pass"
PARSE_DASHBOARD_SSL_KEY: "sslKey"
PARSE_DASHBOARD_SSL_CERT: "sslCert"
PARSE_DASHBOARD_CONFIG: undefined // Only for reference, it must not exist
PARSE_DASHBOARD_COOKIE_SESSION_SECRET: undefined // set the cookie session secret, defaults to a random string. Use this option if you want sessions to work across multiple servers, or across restarts
동일한 대시 보드에서 여러 앱을 관리하는 것도 가능합니다. parse-dashboard-config.json 파일의 "apps" 배열에 추가 항목을 추가하기 만하면됩니다.
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " , // Self-hosted Parse Server
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App "
},
{
"serverURL" : " http://localhost:1337/parse2 " , // Self-hosted Parse Server
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App 2 "
}
]
}구문 분석 대시 보드에는 자동 생성 된 구문 분석 GraphQL API와 함께 재생할 수있는 GraphQL Playground가 내장되어 있습니다.
--graphQLServerURL 옵션을 parse-dashboard CLI에 전달하여 GraphQL 놀이터를 설정할 수 있습니다.
parse-dashboard --dev --appId yourAppId --masterKey yourMasterKey --serverURL "https://example.com/parse" --graphQLServerURL "https://example.com/graphql" --appName optionalName
graphQLServerURL 옵션은 PARSE_DASHBOARD_GRAPHQL_SERVER_URL 이라는 환경 변수를 통해 사용할 수 있습니다.
HOST: "0.0.0.0"
PORT: "4040"
MOUNT_PATH: "/"
PARSE_DASHBOARD_SERVER_URL: "http://localhost:1337/parse"
PARSE_DASHBOARD_GRAPHQL_SERVER_URL: "http://localhost:1337/graphql"
PARSE_DASHBOARD_MASTER_KEY: "myMasterKey"
PARSE_DASHBOARD_APP_ID: "myAppId"
PARSE_DASHBOARD_APP_NAME: "MyApp"
parse-dashboard-config.json 파일에서 GraphQL Playground를 설정할 수도 있습니다.
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"graphQLServerURL" : " http://localhost:1337/graphql " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App "
},
{
"serverURL" : " http://localhost:1337/parse2 " ,
"graphQLServerURL" : " http://localhost:1337/graphql2 " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App 2 "
}
]
}대시 보드를 시작한 후 브라우저에서 http://0.0.0.0:4040/apps/mytestapp/api_console/graphql을 방문 할 수 있습니다.

구문 분석 대시 보드는 각 앱에 대한 옵션 아이콘 추가를 지원하므로 목록에서 더 쉽게 식별 할 수 있습니다. 이렇게하려면 구성 파일을 사용하고 iconsFolder 를 정의하고 각 앱 (확장자 포함)의 iconName 매개 변수를 정의 해야 합니다. iconsFolder 의 경로는 구성 파일과 관련이 있습니다. 전 세계적으로 ParsedAshboard를 설치 한 경우 전체 경로를 iconsFolder 의 값으로 사용해야합니다. 의미를 시각화하기 위해 다음 예제 icons 구성 파일과 동일한 디렉토리 아래에있는 디렉토리입니다.
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App " ,
"iconName" : " MyAppIcon.png " ,
}
],
"iconsFolder" : " icons "
} 구문 분석 대시 보드는 각 앱에 대한 선택적인 배경 색상을 추가하여 목록에서 더 쉽게 식별 할 수 있습니다. 이를 위해서는 구성 파일을 사용 하고 각 앱의 매개 변수에 1 primaryBackgroundColor secondaryBackgroundColor CSS style 입니다. 의미를 시각화하려면 다음 예에서는 backgroundColor 구성 파일입니다.
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App " ,
"primaryBackgroundColor" : " #FFA500 " , // Orange
"secondaryBackgroundColor" : " #FF4500 " // OrangeRed
},
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App [2] " ,
"primaryBackgroundColor" : " rgb(255, 0, 0) " , // Red
"secondaryBackgroundColor" : " rgb(204, 0, 0) " // DarkRed
}
]
} 각 앱의 구성 파일에서 appNameForURL 설정하여 대시 보드 내에서 앱의 URL을 제어 할 수 있습니다. 이렇게하면 대시 보드에서 북마크를 사용하거나 링크를 공유 할 수 있습니다.
앱을 프로덕션으로 변경하려면 구성 파일에서 production true 로 설정하십시오. 기본값은 지정되지 않은 경우 거짓입니다.
각 앱 구성에서 열 예방 옵션에 preventSort 추가하여 일부 열이 정렬 가능한 방지 할 수 있습니다.
"apps" : [
{
"appId" : " local_app_id " ,
"columnPreference" : {
"_User" : [
{
"name" : " createdAt " ,
"visible" : true ,
"preventSort" : true
},
{
"name" : " updatedAt " ,
"visible" : true ,
"preventSort" : false
},
]
}
}
] 열이 많은 클래스가 있고 동일한 열로 자주 필터링하는 경우 filterSortToTop 옵션으로 columnPreference 설정을 확장하여 상단에 정렬 할 수 있습니다.
"apps" : [
{
"columnPreference" : {
"_User" : [
{
"name" : " objectId " ,
"filterSortToTop" : true
},
{
"name" : " email " ,
"filterSortToTop" : true
}
]
}
}
] Parse Dashboard의 데이터 브라우저에 저장된 필터는 현재 브라우저 세션에서 현재 대시 보드 사용자에게만 사용할 수 있습니다. 앱의 모든 대시 보드 사용자가 필터를 영구적으로 사용할 수 있도록 classPreference 설정에서 필터를 정의 할 수 있습니다.
예를 들어:
"apps" : [{
"classPreference" : {
"_Role" : {
"filters" : [{
"name" : " Filter Name " ,
"filter" : [
{
"field" : " objectId " ,
"constraint" : " exists "
}
]
}]
}
}
}]먼저 데이터 브라우저에서 필터를 저장 한 다음 앱 설정> 내보내기 클래스 환경 설정 에서 필터 정의를 내보내면서 손으로 글을 쓰지 않고 필터 정의를 편리하게 작성할 수 있습니다.
scripts 옵션으로 클라우드 기능을 실행하기 위해 스크립트를 지정할 수 있습니다.
"apps" : [
{
"scripts" : [
{
"title" : " Delete Account " ,
"classes" : [ " _User " ],
"cloudCodeFunction" : " deleteAccount " ,
"showConfirmationDialog" : true ,
"confirmationDialogStyle" : " critical "
}
]
}
] scrips 옵션으로 사용자 정의 필드를 지정할 수도 있습니다.
"apps" : [
{
"scripts" : [
{
"title" : " Delete account " ,
"classes" : [
{
"name" : " _User " ,
"fields" : [
{ "name" : " createdAt " , "validator" : " value => value > new Date( " 2025 " ) " }
]
}
],
"cloudCodeFunction" : " deleteAccount "
}
]
}
]
다음으로 호출 될 구문 분석 서버에서 클라우드 기능을 정의하십시오. 데이터 브라우저에서 선택된 객체는 요청 매개 변수로 제공됩니다.
Parse . Cloud . define ( 'deleteAccount' , async ( req ) => {
req . params . object . set ( 'deleted' , true ) ;
await req . params . object . save ( null , { useMasterKey : true } ) ;
} , {
requireMaster : true
} ) ; 스크립트가 호출 된 필드는 selectedField 에서 액세스 할 수 있습니다.
Parse . Cloud . define ( 'deleteAccount' , async ( req ) => {
if ( req . params . selectedField !== 'objectId' ) {
throw new Parse . Error ( Parse . Error . SCRIPT_FAILED , 'Deleting accounts is only available on the objectId field.' ) ;
}
req . params . object . set ( 'deleted' , true ) ;
await req . params . object . save ( null , { useMasterKey : true } ) ;
} , {
requireMaster : true
} ) ;encodeParseObjectInCloudFunction true 로 설정하여 데이터 브라우저에서 선택한 객체가 Parse.Object 의 인스턴스로 클라우드 기능에서 사용할 수 있도록해야합니다. 옵션이 설정되지 않았거나 false 로 설정되거나 이전 버전의 Parse 서버를 사용하는 경우 객체는 일반 JavaScript 객체로 제공되며 JSON 개체에서 req.params.object = Parse.Object.fromJSON(req.params.object); 사용하여 Parse.Object 개체에서 parse.object 인스턴스로 변환해야합니다. , Parse.Object 속성 및 메소드를 호출하기 전에.
구식 버전의 구문 분석 :
Parse . Cloud . define ( 'deleteAccount' , async ( req ) => {
req . params . object = Parse . Object . fromJSON ( req . params . object ) ;
req . params . object . set ( 'deleted' , true ) ;
await req . params . object . save ( null , { useMasterKey : true } ) ;
} , {
requireMaster : true
} ) ; Parse . Cloud . define ( 'deleteAccount' , async ( req ) => {
if ( ! req . master || ! req . params . object ) {
throw 'Unauthorized' ;
}
req . params . object = Parse . Object . fromJSON ( req . params . object ) ;
req . params . object . set ( 'deleted' , true ) ;
await req . params . object . save ( null , { useMasterKey : true } ) ;
} ) ;CLI로 구문 분석 대시 보드를 시작하는 대신 Express Middleware로 실행할 수도 있습니다.
var express = require ( 'express' ) ;
var ParseDashboard = require ( 'parse-dashboard' ) ;
var dashboard = new ParseDashboard ( {
"apps" : [
{
"serverURL" : "http://localhost:1337/parse" ,
"appId" : "myAppId" ,
"masterKey" : "myMasterKey" ,
"appName" : "MyApp"
}
]
} ) ;
var app = express ( ) ;
// make the Parse Dashboard available at /dashboard
app . use ( '/dashboard' , dashboard ) ;
var httpServer = require ( 'http' ) . createServer ( app ) ;
httpServer . listen ( 4040 ) ;동일한 서버/포트에서 구문 분석 서버와 구문 분석 대시 보드를 모두 실행하려면 Express Middleware로 실행할 수 있습니다.
var express = require ( 'express' ) ;
var ParseServer = require ( 'parse-server' ) . ParseServer ;
var ParseDashboard = require ( 'parse-dashboard' ) ;
var api = new ParseServer ( {
// Parse Server settings
} ) ;
var options = { allowInsecureHTTP : false } ;
var dashboard = new ParseDashboard ( {
// Parse Dashboard settings
} , options ) ;
var app = express ( ) ;
// make the Parse Server available at /parse
app . use ( '/parse' , api ) ;
// make the Parse Dashboard available at /dashboard
app . use ( '/dashboard' , dashboard ) ;
var httpServer = require ( 'http' ) . createServer ( app ) ;
httpServer . listen ( 4040 ) ; 브라우저에서 앱의 서버 URL에 액세스 할 수 있는지 확인하십시오. 대시 보드를 배포하는 경우 localhost URL이 작동하지 않습니다.
앱 마스터 키를 누출하지 않고 대시 보드를 안전하게 배포하려면 HTTPS 및 기본 인증을 사용해야합니다.
보안 연결을 사용하는 경우 배포 된 대시 보드가 감지됩니다. 로드 밸런서 또는 전면 프록시 뒤에 대시 보드를 배포하는 경우 앱이 연결이 안전하다는 것을 감지 할 수 없습니다. 이 경우 --trustProxy=1 옵션으로 대시 보드를 시작할 수 있습니다 (또는 Parse_dashboard_trust_proxy config var를 1로 설정하여 클라이언트의 연결 보안에 대한 x-forwarded-* 헤더에 의존 할 수 있습니다. 이는 Heroku와 같은 서비스를 호스팅하는 데 유용하며, 제공된 프록시 헤더를 신뢰하여 HTTP 또는 HTTPS를 사용하는지 여부를 올바르게 결정할 수 있습니다. 대시 보드를 Express Middleware로 사용할 때이 설정을 켜면 다음과 같습니다.
var trustProxy = true ;
var dashboard = new ParseDashboard ( {
"apps" : [
{
"serverURL" : "http://localhost:1337/parse" ,
"appId" : "myAppId" ,
"masterKey" : "myMasterKey" ,
"appName" : "MyApp"
}
] ,
"trustProxy" : 1
} ) ; 대시 보드 옵션을 활성화하여 enableSecurityChecks 하고 앱 설정> 보안을 방문하여 구문 분석 서버의 보안 상태를 볼 수 있습니다.
const dashboard = new ParseDashboard ( {
"apps" : [
{
"serverURL" : "http://localhost:1337/parse" ,
"appId" : "myAppId" ,
"masterKey" : "myMasterKey" ,
"appName" : "MyApp"
"enableSecurityChecks" : true
}
] ,
} ) ; parse-dashboard-config.json 구성 파일을 추가하여 기본 인증을 위해 대시 보드를 기본 인증을 위해 구성 할 수 있습니다.
{
"apps" : [{ "..." : " ... " }],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass "
},
{
"user" : " user2 " ,
"pass" : " pass "
}
],
"useEncryptedPasswords" : true | false
} 비밀번호를 plain text 또는 bcrypt 형식으로 저장할 수 있습니다. bcrypt 형식을 사용하려면 config useEncryptedPasswords 매개 변수를 true 로 설정해야합니다. parse-dashboard --createUser 사용하여 사용자 구성에 결과를 붙여서 암호화 된 암호를 생성 할 수 있습니다.
사용자가 로그인하기 위해 MFA (Multi-Factor Authentication)를 요구하여 사용자 계정에 대한 추가 보안 계층을 추가 할 수 있습니다.
MFA 활성화를 사용하면 사용자는 로그인 비밀번호 외에도 일반적으로 실제 장치에 묶인 일회성 비밀번호를 제공해야합니다. 즉, 로그인 암호를 아는 것 외에도 사용자는 일회성 비밀번호를 생성하기 위해 장치에 물리적으로 액세스해야합니다. 이 일회성 비밀번호는 시간 기반 (TOTP)이며 만료 될 때까지 짧은 시간, 일반적으로 30 초 동안 만 유효합니다.
사용자는 일회성 비밀번호를 생성하려면 인증기 앱이 필요합니다. 이 앱은 많은 타사가 제공하며 대부분 무료로 제공됩니다.
parse-dashboard --createUser 실행하여 새 사용자를 만들면 새 사용자를 위해 MFA를 활성화할지 여부를 묻습니다. 기존 사용자에 대한 MFA를 활성화하려면 parse-dashboard --createMFA 실행하여 mfa 비밀을 생성 한 다음 기존 사용자 구성에 추가하십시오 (예 :).
{
"apps" : [{ "..." : " ... " }],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass " ,
"mfa" : " lmvmOIZGMTQklhOIhveqkumss "
}
]
} 구문 분석 대시 보드는 업계 표준을 따르고 대부분의 인증 자 앱과 호환되도록 기본적으로 공통 OTP 알고리즘 SHA-1 지원합니다. TOTP 특성 (알고리즘, 숫자 길이, 기간)에 관한 특정 보안 요구 사항이있는 경우 위에서 언급 한 가이드 구성을 사용하여 사용자 정의 할 수 있습니다.
여러 응용 프로그램을 관리하기 위해 대시 보드를 구성한 경우 사용자 ID를 기반으로 앱 관리를 제한 할 수 있습니다.
이렇게하려면 다음 형식과 일치하도록 parse-dashboard-config.json 구성 파일을 업데이트하십시오.
{
"apps" : [{ "..." : " ... " }],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass1 " ,
"apps" : [{ "appId" : " myAppId1 " }, { "appId" : " myAppId2 " }]
},
{
"user" : " user2 " ,
"pass" : " pass2 " ,
"apps" : [{ "appId" : " myAppId1 " }]
} ]
}이러한 구성의 효과는 다음과 같습니다.
user1 로그인하면 대시 보드에서 myAppId1 및 myAppId2 관리 할 수 있습니다.
user2 로그인하면 대시 보드에서 myAppId1 만 관리 할 수 있습니다.
구문 분석-서버 2.6.5를 시작하면, 클라이언트의 물체의 돌연변이를 방지하기 위해 Parse-Server에 readOnlyMasterKey 를 제공 할 수 있습니다. 이 기능으로 대시 보드를 보호하려면 masterKey 대신 readOnlyMasterKey 를 사용하십시오. 모든 쓰기 통화가 실패합니다.
parse-server 시작하십시오
{
"masterKey" : " YOUR_MASTER_KEY_HERE " ,
"readOnlyMasterKey" : " YOUR_READ_ONLY_MASTER_KEY " ,
}그런 다음 대시 보드 구성에서 :
var trustProxy = true ;
var dashboard = new ParseDashboard ( {
"apps" : [
{
"serverURL" : "http://localhost:1337/parse" ,
"appId" : "myAppId" ,
"masterKey" : "YOUR_READ_ONLY_MASTER_KEY" ,
"appName" : "MyApp"
}
] ,
"trustProxy" : 1
} ) ; "앱"구성에서 읽기 전용 기능을 사용하려는 앱에 대한 readOnlyMasterKey 지정해야합니다. 사용자를 읽기 전용 사용자로 표시 할 수 있습니다.
{
"apps" : [
{
"appId" : " myAppId1 " ,
"masterKey" : " myMasterKey1 " ,
"readOnlyMasterKey" : " myReadOnlyMasterKey1 " ,
"serverURL" : " myURL1 " ,
"port" : 4040 ,
"production" : true
},
{
"appId" : " myAppId2 " ,
"masterKey" : " myMasterKey2 " ,
"readOnlyMasterKey" : " myReadOnlyMasterKey2 " ,
"serverURL" : " myURL2 " ,
"port" : 4041 ,
"production" : true
}
],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass1 " ,
"readOnly" : true ,
"apps" : [{ "appId" : " myAppId1 " }, { "appId" : " myAppId2 " }]
},
{
"user" : " user2 " ,
"pass" : " pass2 " ,
"apps" : [{ "appId" : " myAppId1 " }]
}
]
} 이 방법으로 user1 myAppId1 및 myAppId2 에 대한 액세스 권한이 있습니다.
"앱"구성에서 읽기 전용 기능을 사용하려는 앱에 대한 readOnlyMasterKey 지정해야합니다. APP 당시 사용자에게만 읽기 만 액세스 할 수 있습니다.
{
"apps" : [
{
"appId" : " myAppId1 " ,
"masterKey" : " myMasterKey1 " ,
"readOnlyMasterKey" : " myReadOnlyMasterKey1 " ,
"serverURL" : " myURL " ,
"port" : 4040 ,
"production" : true
},
{ "..." : " ... " }
],
"users" : [
{
"user" : " user " ,
"pass" : " pass " ,
"apps" : [{ "appId" : " myAppId " , "readOnly" : true }, { "appId" : " myAppId2 " }]
}
]
} 이 구성을 통해 user1은 myAppId1 에 대한 액세스 전용 및 myAppId2 에 대한 읽기/쓰기 액세스 만 읽습니다.
최신 버전의 대시 보드를 사용하면 푸시 알림을 위해 현지화 된 메시지를 보낼 수 있습니다. 대시 보드 사용자를 지원하려는 로케일 또는 언어 목록을 제공 할 수 있습니다.
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App " ,
"iconName" : " MyAppIcon.png " ,
"supportedPushLocales" : [ " en " , " ru " , " fr " ]
}
],
"iconsFolder" : " icons "
}공식 Docker 이미지는 Docker Hub에 게시됩니다
config.json 볼륨으로 장착하여 이미지를 실행하십시오.
docker run -d -p 8080:4040 -v host/path/to/config.json:/src/Parse-Dashboard/parse-dashboard-config.json parseplatform/parse-dashboard --dev
Appid, MasterKey 및 ServerUrl을 인수로 전달할 수도 있습니다.
docker run -d -p 4040:4040 parseplatform/parse-dashboard --dev --appId $APP_ID --masterKey $MASTER_KEY --serverURL $SERVER_URL
기본적으로 컨테이너는 컨테이너 내부의 포트 4040에서 앱을 시작합니다. 그러나 사용자 정의 명령도 실행할 수 있습니다 (사용자 정의 설정을 위해 Deploying in production 참조).
이 예에서는 호스트 머신의 포트 80에서 생산 모드에서 응용 프로그램을 실행하려고합니다.
docker run -d -p 80:8080 -v host/path/to/config.json:/src/Parse-Dashboard/parse-dashboard-config.json parse-dashboard --port 8080 --dev
Docker에 익숙하지 않은 경우 --port 8080 전체 명령 npm start -- --port 8080 . 응용 프로그램은 컨테이너 내부의 포트 8080에서 시작되며 포트 8080 호스트 시스템의 포트 80 에 장착됩니다.
(다음은 전체 기능 목록이 아니라 포괄적 인 기능 목록을 작성하기위한 작업이 진행 중입니다.)
필터 대화 상자를 사용하면 현재 클래스에 대한 포인터가있는 다른 클래스를 기반으로 관계형 필터 조건을 추가 할 수 있습니다.
예를 들어, _User 클래스의 사용자는 다음과 같습니다.
_User 포인터 필드가있는 Purchase 클래스 구매_User 포인터 필드와 Payment 클래스의 거래관계형 필터를 사용하면 모든 사용자를 필터링 할 수 있습니다.
Purchase 클래스) 구매Payment 클래스)으로 지불 이러한 필터를 적용하려면 _User 클래스로 이동하여 Purchase 및 Payment 클래스와 함께 필요한 두 가지 필터 조건을 추가하십시오.
데이터 브라우저는 데이터 브라우저 테이블에서 현재 선택된 객체와 관련된 정보를 표시 할 수있는 정보 패널을 제공합니다. 정보 패널은 대시 보드 옵션에서 정보 패널이 구성되는 클래스를 찾을 때 오른쪽 상단의 메뉴 버튼 쇼 패널을 클릭하여 볼 수 있습니다.
다음 예제 대시 보드 구성은 클라우드 코드 함수 getUserDetails 호출하고 반환 된 응답을 표시하여 제목 User Details 있는 _User 클래스의 정보 패널을 보여줍니다.
"apps" : [
{
"infoPanel" : [
{
"title" : " User Details " ,
"classes" : [ " _User " ],
"cloudCodeFunction" : " getUserDetails "
}
]
}
]클라우드 코드 함수는 페이로드에서 선택한 객체를 수신하고 다양한 항목을 포함 할 수있는 응답을 반환합니다.
정보 패널에는 여러 세그먼트가 포함되어있어 다른 정보 그룹의 정보를 표시 할 수 있습니다.
| 매개 변수 | 값 | 선택 과목 | 설명 |
|---|---|---|---|
segments | 정렬 | 아니요 | 각 세그먼트는 표시 할 뚜렷한 항목 그룹을 나타냅니다. |
segments[i].title | 끈 | 아니요 | 표시 될 세그먼트의 제목. |
segments[i].items | 정렬 | 아니요 | 세그먼트 내에서 주문 된 항목 배열. 각 항목은 텍스트, 키 값 쌍, 테이블, 이미지 등과 같은 유형이 다를 수 있습니다. |
예:
{
"panel" : {
"segments" : [
{
"title" : " Purchases " ,
"items" : [
{
"type" : " text " ,
"text" : " This user has a high churn risk! "
}
]
}
]
}
}항목 배열에는 텍스트, 키 값 쌍, 테이블, 이미지, 비디오, 오디오 및 버튼과 같은 다양한 유형의 컨텐츠가 포함될 수 있습니다. 각 유형은 정보 패널에 정보를 표시하는 다른 방법을 제공하므로 사용자 정의 가능하고 풍부한 사용자 경험이 가능합니다. 아래는 각 유형에 대한 자세한 설명입니다.
간단한 텍스트 필드.
| 매개 변수 | 값 | 선택 과목 | 설명 |
|---|---|---|---|
type | 끈 | 아니요 | "text" 여야합니다. |
text | 끈 | 아니요 | 표시 할 텍스트. |
예:
{
"type" : " text " ,
"text" : " This user has a high churn risk! "
}키와 값으로 구성된 텍스트 항목. 값은 선택적으로 URL에 연결될 수 있습니다.
| 매개 변수 | 값 | 선택 과목 | 설명 |
|---|---|---|---|
type | 끈 | 아니요 | "keyValue" 여야합니다. |
key | 끈 | 아니요 | 표시 할 핵심 텍스트. |
value | 끈 | 아니요 | 표시 할 값 텍스트. |
url | 끈 | 예 | 값 텍스트를 클릭 할 때 새 브라우저 탭에서 열리는 URL. |
예 :
{
"type" : " keyValue " ,
"key" : " Lifetime purchase value " ,
"value" : " $10k "
}{
"type" : " keyValue " ,
"key" : " Last purchase ID " ,
"value" : " 123 " ,
"url" : " https://example.com/purchaseDetails?purchaseId=012345 "
}구조화 된 형식으로 데이터를 표시 할 열 및 행이있는 테이블.
| 매개 변수 | 값 | 선택 과목 | 설명 |
|---|---|---|---|
type | 끈 | 아니요 | "table" 이어야합니다. |
columns | 정렬 | 아니요 | 이름과 유형을 포함한 열 정의. |
columns[*].name | 끈 | 아니요 | 표시 할 열의 이름입니다. |
columns[*].type | 끈 | 아니요 | 열 값의 유형 (예 : "string" , "number" ). |
rows | 정렬 | 아니요 | 각 행은 각 열에 대한 값을 포함하는 객체 인 데이터 행입니다. |
예:
{
"type" : " table " ,
"columns" : [
{
"name" : " Name " ,
"type" : " string "
},
{
"name" : " Age " ,
"type" : " number "
}
],
"rows" : [
{
"Name" : " Alice " ,
"Age" : 30
},
{
"Name" : " Bob " ,
"Age" : 40
}
]
}패널에 표시되는 이미지.
| 매개 변수 | 값 | 선택 과목 | 설명 |
|---|---|---|---|
type | 끈 | 아니요 | "image" 여야합니다. |
url | 끈 | 아니요 | 표시 할 이미지의 URL. |
예:
{
"type" : " image " ,
"url" : " https://example.com/images?purchaseId=012345 "
}패널에 표시되는 비디오.
| 매개 변수 | 값 | 선택 과목 | 설명 |
|---|---|---|---|
type | 끈 | 아니요 | "video" 여야합니다. |
url | 끈 | 아니요 | 표시 할 비디오의 URL. |
예:
{
"type" : " video " ,
"url" : " https://example.com/video.mp4 "
}패널에서 재생할 오디오 파일.
| 매개 변수 | 값 | 선택 과목 | 설명 |
|---|---|---|---|
type | 끈 | 아니요 | "audio" 여야합니다. |
url | 끈 | 아니요 | 연주 할 오디오의 URL. |
예:
{
"type" : " audio " ,
"url" : " https://example.com/audio.mp3 "
}클릭하면 작업을 유발하는 버튼.
| 매개 변수 | 값 | 선택 과목 | 설명 |
|---|---|---|---|
type | 끈 | 아니요 | "button" 이어야합니다. |
text | 끈 | 아니요 | 버튼에 표시 할 텍스트. |
action | 물체 | 아니요 | 버튼을 클릭 할 때 수행 할 동작이 수행됩니다. |
action.url | 끈 | 아니요 | 요청을 보내야하는 URL. |
action.method | 끈 | 아니요 | 액션에 사용할 HTTP 방법 (예 : "POST" ). |
action.headers | 물체 | 예 | 요청에 포함 할 선택적 헤더. |
action.body | 물체 | 예 | JSON 형식의 요청 본문. |
예:
{
"type" : " button " ,
"text" : " Click me! " ,
"action" : {
"url" : " https://api.example.com/click " ,
"method" : " POST " ,
"headers" : {
"Content-Type" : " application/json "
},
"body" : {
"key" : " value "
}
}
}이 기능을 사용하면 해당 사용자의 데이터 권한과 관련하여 데이터 브라우저를 다른 사용자로 사용할 수 있습니다. 예를 들어, 사용자가 볼 수있는 기록과 필드 만 볼 수 있습니다.
켈 다른 사용자로 로그인하면 다른 로그인 방법을 사용하여 사용자가 스스로 로그인 한 것처럼 동일한 클라우드 트리거가 트리거됩니다. 다른 사용자로 로그인하면 해당 사용자의 비밀번호를 입력해야합니다.
이 기능을 사용하면 브라우저에서 포인터가 표시되는 방식을 변경할 수 있습니다. 기본적으로 포인터는 링크 된 객체의 objectId 로 표시됩니다. 이를 객체 클래스의 다른 열로 변경할 수 있습니다. 예를 들어, 클래스 Installation 클래스 User 에 대한 포인터가 포함 된 필드가있는 경우 포인터는 기본적으로 사용자의 objectId 표시합니다. 포인터가 대신 사용자의 이메일 주소를 표시하도록 사용자의 필드 email 표시하도록이를 변경할 수 있습니다.
objectId 표시합니다.createdAt , updatedAt , ACL 과 같은 시스템 열은 포인터 키로 설정할 수 없습니다.objectId 로 재설정합니다.
켈 각 행의 각 사용자 정의 포인터 키에 대해 사용자 정의 포인터 키를 해결하기 위해 서버 요청이 트리거됩니다. 예를 들어, 브라우저에 50 개의 행이있는 클래스를 표시하고 각 행에 3 개의 커스텀 포인터 키가 포함 된 경우 총 150 개의 별도 서버 요청이 트리거됩니다.
이 기능은 선택한 행 또는 개별 클래스의 모든 행을 사용하여 CSV 파일에 저장 한 다음 다운로드됩니다. CSV 헤더는 열 이름과 일치하는 파일 상단에 추가됩니다.
켈 모든 데이터를 내보낼 때 현재 10,000 행 제한이 있습니다. 클래스에 10,000 행 이상이 존재하면 CSV 파일에는 10,000 행만 포함됩니다.
우리는 오픈 소스 커뮤니티에서 그것이 성장하고 번성하는 것을보기 위해 Parse가 당신이되기를 정말로 원합니다. 구문 분석 대시 보드 가이드에 기여한 것을 참조하십시오.
2017 년 4 월 5 일 현재 Parse, LLC는이 코드를 Parse-Community Organization으로 전송했으며 더 이상이 코드에 기여하거나 배포하지 않을 것입니다.