



Parse Dashboard - это автономная панель инструментов для управления приложениями Sever Parse.
Установите приборную панель от npm .
npm install -g parse-dashboard
Вы можете запустить панель мониторинга для приложения с одной командой, предоставив идентификатор приложения, мастер -ключ, URL и имя, подобное:
parse-dashboard --dev --appId yourAppId --masterKey yourMasterKey --serverURL "https://example.com/parse" --appName optionalName
Вы можете установить путь хоста, порта и крепления, поставляя варианты --host , --port и --mountPath для Parse-Dashboard. Вы можете использовать все, что вы хотите в качестве имени приложения, или оставить его, и в этом случае идентификатор приложения будет использоваться.
Параметр --dev отключает готовые к производству функции безопасности. Этот параметр полезен при запуске панели панели Parse на Docker. Использование этого параметра будет:
allowInsecureHTTPmasterKey Parse Server передаваться в ClareText без шифрования
️ Не используйте этот параметр при развертывании панели панели Parse в производственной среде.
После начала приборной панели вы можете посетить http: // localhost: 4040 в вашем браузере:

Панель панели Parse совместима со следующими версиями сервера Parse.
| Parse Dashboard версия | Версия сервера Parse | Совместимый |
|---|---|---|
| > = 1,0 | > = 2,1,4 | ✅ Да |
Панель панели Parse непрерывно проверяется с самыми последними выпусками Node.js для обеспечения совместимости. Мы следим за долгосрочным планом поддержки Node.js и тестируем только версии, которые официально поддерживаются и не достигли даты своего окончания жизни.
| Версия | Последняя версия | Конец жизни | Совместимый |
|---|---|---|---|
| Node.js 18 | 18.20.4 | Май 2025 г. | ✅ Да |
| Node.js 20 | 20.18.0 | Апрель 2026 года | ✅ Да |
| Node.js 22 | 22.9.0 | Апрель 2027 г. | ✅ Да |
| Параметр | Тип | Необязательный | По умолчанию | Пример | Описание |
|---|---|---|---|---|---|
apps | Массив <объект> | нет | - | [{ ... }, { ... }] | Приложения, которые настроены для приборной панели. |
infoPanel | Массив <объект> | да | - | [{ ... }, { ... }] | Конфигурация информационной панели. |
infoPanel[*].title | Нить | нет | - | User Details | Название панели. |
infoPanel[*].classes | Массив <строка> | нет | - | ["_User"] | Классы, для которых должна отображаться информационная панель. |
infoPanel[*].cloudCodeFunction | Нить | нет | - | getUserDetails | Функция облачного кода, которая получила выбранную объект в браузере данных и возвращает ответ, который будет отображаться на информационной панели. |
apps.scripts | Массив <объект> | да | [] | [{ ... }, { ... }] | Сценарии, которые могут быть выполнены для этого приложения. |
apps.scripts.title | Нить | нет | - | 'Delete User' | Заголовок, который будет отображаться в контекстном меню браузера данных и диалоговом окне подтверждения сценария. |
apps.scripts.classes | Массив <строка> | нет | - | ['_User'] | Классы объектов Parse, для которых можно выполнить сценарии. |
apps.scripts.cloudCodeFunction | Нить | нет | - | 'deleteUser' | Имя функции Parse Cloud для выполнения. |
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-config.json в вашей локальной иерархии каталога панели панели панели панели. Файл должен соответствовать следующему формату:
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " MyApp "
}
]
} Затем вы можете запустить панель панели, используя parse-dashboard --config parse-dashboard-config.json .
Это работает только при запуске приложения с помощью команды
parse-dashboard
Есть также два метода, которые вы можете использовать для настройки панели панели с использованием переменных среды.
Предоставьте всю конфигурацию JSON в PARSE_DASHBOARD_CONFIG и она будет проанализирована так же, как файл конфигурации.
Вы также можете определить каждую опцию конфигурации индивидуально.
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
Также возможно управление несколькими приложениями с одной и той же панелью. Просто добавьте дополнительные записи в Apps Apps 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 "
}
]
}Dashboard Parse имеет встроенную игровую площадку GraphQL, чтобы играть с автоматическим сгенерированным API Parse GraphQL.
Вы можете настроить Playground GraphQL, передавая опцию- --graphQLServerURL в CLI parse-dashboard :
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"
Вы также можете настроить Playground GraphQL в вашем файле parse-dashboard-config.json :
{
"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 в вашем браузере:

Dashboard Parse поддерживает добавление дополнительного значка для каждого приложения, поэтому вы можете идентифицировать их проще в списке. Для этого необходимо использовать файл конфигурации, определить в нем 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 "
} Dashboard Parse поддерживает добавление дополнительного цвета фона для каждого приложения, поэтому вы можете идентифицировать их проще в списке. Для этого вы должны использовать файл конфигурации, определить в нем 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 к параметрам ColumnPreference в каждой конфигурации приложения
"apps" : [
{
"appId" : " local_app_id " ,
"columnPreference" : {
"_User" : [
{
"name" : " createdAt " ,
"visible" : true ,
"preventSort" : true
},
{
"name" : " updatedAt " ,
"visible" : true ,
"preventSort" : false
},
]
}
}
] Если у вас есть классы с большим количеством столбцов, и вы часто отфильтровываете их с помощью тех же столбцов, вы можете сортировать их вверх, расширив настройку columnPreference с помощью опции filterSortToTop :
"apps" : [
{
"columnPreference" : {
"_User" : [
{
"name" : " objectId " ,
"filterSortToTop" : true
},
{
"name" : " email " ,
"filterSortToTop" : true
}
]
}
}
] Фильтры, которые вы сохраняете в браузере данных Data Parse Dashboard, доступны только для текущего пользователя 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, которая будет вызвана. Объект, который был выбран в браузере данных, будет доступен в качестве параметра запроса:
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 в экземпляр Parse.Object с помощью req.params.object = Parse.Object.fromJSON(req.params.object); , прежде чем вы сможете вызвать какие -либо свойства и методы Parse.Object .
Для старых версий Parse Server:
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 } ) ;
} ) ;Вместо того, чтобы запустить панель панели Parse с CLI, вы также можете запустить ее как экспресс -промежуточное программное обеспечение.
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 ) ;Если вы хотите запустить панель Parse Server и Parse на одном и том же сервере/порту, вы можете запустить их как как экспресс -промежуточное программное обеспечение:
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 -адресу сервера для ваших приложений могут быть доступны вашим браузером. Если вы развертываете панель инструментов, то URL -адреса localhost не будут работать.
Чтобы надежно развернуть панель инструментов, не протекая мастер -ключ приложения, вам нужно будет использовать HTTPS и базовую аутентификацию.
Развернутая панель инструментов обнаруживает, если вы используете безопасное соединение. Если вы развертываете панель панели позади балансировщика нагрузки или прокси-сервера, то приложение не сможет обнаружить, что соединение безопасно. В этом случае вы можете запустить панель панели с опции --trustProxy=1 (или установить Parse_dashboard_trust_proxy Config VAR на 1), чтобы полагаться на заголовки X-Forwarded-* для безопасности подключения клиента. Это полезно для хостинга на таких услугах, как Heroku, где вы можете доверять предоставленным прокси -заголовкам, чтобы правильно определить, используете ли вы HTTP или HTTPS. Вы также можете включить эту настройку при использовании приборной панели в качестве промежуточного программного обеспечения Express:
var trustProxy = true ;
var dashboard = new ParseDashboard ( {
"apps" : [
{
"serverURL" : "http://localhost:1337/parse" ,
"appId" : "myAppId" ,
"masterKey" : "myMasterKey" ,
"appName" : "MyApp"
}
] ,
"trustProxy" : 1
} ) ; Вы можете просмотреть статус безопасности вашего сервера Parse, включив опцию Dashboard 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) для входа в систему.
При включении MFA пользователь должен предоставить одноразовый пароль, который обычно связан с физическим устройством, в дополнение к их паролю входа. Это означает, что В дополнение к знанию пароля входа в систему пользователь должен иметь физический доступ к устройству для генерации одноразового пароля. Этот одноразовый пароль основан на времени (TOTP) и действителен только в течение короткого периода времени, как правило, 30 секунд, пока не истекает.
Пользователю требуется приложение Authenticator для генерации одноразового пароля. Эти приложения предоставляются многими третьими вечеринками и в основном бесплатно.
Если вы создаете нового пользователя с помощью parse-dashboard --createUser , вам спросят, хотите ли вы включить MFA для нового пользователя. Чтобы включить MFA для существующего пользователя, запустите parse-dashboard --createMFA чтобы сгенерировать секрет mfa , который вы затем добавляете в существующую конфигурацию пользователя, например:
{
"apps" : [{ "..." : " ... " }],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass " ,
"mfa" : " lmvmOIZGMTQklhOIhveqkumss "
}
]
} Dashboard Parse следует за отраслевым стандартом и поддерживает общий алгоритм OTP SHA-1 по умолчанию, чтобы совместимо с большинством приложений аутентификаторов. Если у вас есть конкретные требования безопасности, касающиеся характеристик TOTP (алгоритм, длина цифр, период времени), вы можете настроить их, используя указанную выше конфигурацию с гидом.
Если вы настроили свою панель инструментов для управления несколькими приложениями, вы можете ограничить управление приложениями на основе идентификации пользователя.
Для этого обновите свой файл конфигурации 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 только с приборной панели.
Запуск Parse-Server 2.6.5, можно предоставить readOnlyMasterKey для Parse-Server для предотвращения мутаций на объектах от клиента. Если вы хотите защитить свою приборную панель с помощью этой функции, просто используйте readOnlyMasterKey вместо masterKey . Все вызовы записи потерпят неудачу.
Начните свой 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 для приложений, которые вы хотите использовать только для чтения в конфигурации «Приложения». Вы можете предоставить чтение только доступ к пользователю на основе приложения:
{
"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 могут иметь:
Purchase с полем указателя _UserPayment с полем указателя _UserРеляционный фильтр позволяет вам фильтровать всех пользователей, которые:
Purchase )Payment ) Чтобы применить такой фильтр, просто перейдите в класс _User и добавьте два необходимых условия фильтра с классами Purchase и Payment .
Браузер данных предлагает информационную панель, которая может отображать информацию, связанную с выбранным в настоящее время объектом в таблице браузеров данных. Информационная панель становится видимой, нажав на панель «Показать» кнопку меню в правом верхнем углу при просмотре класса, для которого информационная панель настроена в параметрах панели панели.
В следующем примере конфигурации панели инструментов показана информационная панель для класса _User с User Details заголовка, вызывая функцию облачного кода getUserDetails и отображая возвращенный ответ.
"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! "
}
]
}
]
}
}Массив элементов может включать различные типы контента, такие как текст, пары клавиш, таблицы, изображения, видео, аудио и кнопки. Каждый тип предлагает другой способ отображения информации на панели Info, что позволяет получить настраиваемый и богатый пользовательский опыт. Ниже приведено подробное объяснение каждого типа.
Простое текстовое поле.
| Параметр | Ценить | Необязательный | Описание |
|---|---|---|---|
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 был вашим, чтобы увидеть, как он растут и процветает в сообществе с открытым исходным кодом. Пожалуйста, смотрите вклад в руководство Parse Dashboard.
По состоянию на 5 апреля 2017 года, Parse, LLC передала этот код организации по общению, и больше не будет вносить свой вклад или распространять этот код.