



Parse Dashboard adalah dasbor mandiri untuk mengelola aplikasi server parse Anda.
Instal dasbor dari npm .
npm install -g parse-dashboard
Anda dapat meluncurkan dasbor untuk aplikasi dengan satu perintah dengan menyediakan ID aplikasi, kunci utama, URL, dan nama seperti ini:
parse-dashboard --dev --appId yourAppId --masterKey yourMasterKey --serverURL "https://example.com/parse" --appName optionalName
Anda dapat mengatur host, port dan mount path dengan memasok --host , --port dan --mountPath opsi untuk parse-dashboard. Anda dapat menggunakan apa pun yang Anda inginkan sebagai nama aplikasi, atau membiarkannya dalam hal ini ID aplikasi akan digunakan.
Parameter --dev menonaktifkan fitur keamanan siap-produksi. Parameter ini berguna saat menjalankan dasbor parse di Docker. Menggunakan parameter ini akan:
allowInsecureHTTPmasterKey ditransmisikan di ClearText tanpa enkripsi
️ Jangan gunakan parameter ini saat menggunakan dasbor parse di lingkungan produksi.
Setelah memulai dasbor, Anda dapat mengunjungi http: // localhost: 4040 di browser Anda:

Dasbor parse kompatibel dengan versi server parse berikut.
| Versi dasbor parse | Versi server parse | Kompatibel |
|---|---|---|
| > = 1.0 | > = 2.1.4 | ✅ Ya |
Parse Dashboard terus diuji dengan rilis Node.js terbaru untuk memastikan kompatibilitas. Kami mengikuti rencana dukungan jangka panjang Node.js dan hanya menguji terhadap versi yang secara resmi didukung dan belum mencapai tanggal akhir kehidupan mereka.
| Versi | Versi Terbaru | Akhir Kehidupan | Kompatibel |
|---|---|---|---|
| Node.js 18 | 18.20.4 | Mei 2025 | ✅ Ya |
| Node.js 20 | 20.18.0 | April 2026 | ✅ Ya |
| Node.js 22 | 22.9.0 | April 2027 | ✅ Ya |
| Parameter | Jenis | Opsional | Bawaan | Contoh | Keterangan |
|---|---|---|---|---|---|
apps | Array <Peject> | TIDAK | - | [{ ... }, { ... }] | Aplikasi yang dikonfigurasi untuk dasbor. |
infoPanel | Array <Peject> | Ya | - | [{ ... }, { ... }] | Konfigurasi Panel Info. |
infoPanel[*].title | Rangkaian | TIDAK | - | User Details | Judul panel. |
infoPanel[*].classes | Array <string> | TIDAK | - | ["_User"] | Kelas -kelas yang harus ditampilkan oleh panel info. |
infoPanel[*].cloudCodeFunction | Rangkaian | TIDAK | - | getUserDetails | Fungsi kode cloud yang menerima objek yang dipilih di browser data dan mengembalikan respons untuk ditampilkan di panel info. |
apps.scripts | Array <Peject> | Ya | [] | [{ ... }, { ... }] | Script yang dapat dieksekusi untuk aplikasi itu. |
apps.scripts.title | Rangkaian | TIDAK | - | 'Delete User' | Judul yang akan ditampilkan di menu Konteks Browser Data dan dialog Konfirmasi Run Script. |
apps.scripts.classes | Array <string> | TIDAK | - | ['_User'] | Kelas objek parse yang dapat dieksekusi skrip. |
apps.scripts.cloudCodeFunction | Rangkaian | TIDAK | - | 'deleteUser' | Nama fungsi Parse Cloud untuk dieksekusi. |
apps.scripts.showConfirmationDialog | Bool | Ya | false | true | true jika dialog konfirmasi harus ditampilkan sebelum skrip dieksekusi, false jika skrip harus segera dieksekusi. |
apps.scripts.confirmationDialogStyle | Rangkaian | Ya | info | critical | Gaya dialog konfirmasi. Nilai yang valid: info (gaya biru), critical (gaya merah). |
apps.cloudConfigHistoryLimit | Bilangan bulat | Ya | 100 | 100 | Jumlah nilai historis yang harus disimpan dalam riwayat perubahan Cloud Config. Nilai yang valid: 0 ... Number.MAX_SAFE_INTEGER . |
Anda juga dapat memulai dasbor dari baris perintah dengan file konfigurasi. Untuk melakukan ini, buat file baru yang disebut parse-dashboard-config.json di dalam hierarki direktori dashboard parse lokal Anda. File harus cocok dengan format berikut:
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " MyApp "
}
]
} Anda kemudian dapat memulai dasbor menggunakan parse-dashboard --config parse-dashboard-config.json .
Ini hanya berfungsi saat memulai aplikasi menggunakan perintah
parse-dashboard
Ada juga dua metode yang dapat Anda gunakan untuk mengonfigurasi dasbor menggunakan variabel lingkungan.
Berikan seluruh konfigurasi JSON di PARSE_DASHBOARD_CONFIG dan akan diuraikan seperti file konfigurasi.
Anda juga dapat menentukan setiap opsi konfigurasi secara individual.
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
Mengelola beberapa aplikasi dari dasbor yang sama juga dimungkinkan. Cukup tambahkan entri tambahan ke dalam array "apps" parse-dashboard-config.json .
{
"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 "
}
]
}Parse Dashboard memiliki taman bermain GraphQL bawaan untuk dimainkan dengan API Parse GraphQL yang dihasilkan secara otomatis.
Anda dapat mengatur taman bermain graphql dengan melewati opsi --graphQLServerURL ke parse-dashboard CLI:
parse-dashboard --dev --appId yourAppId --masterKey yourMasterKey --serverURL "https://example.com/parse" --graphQLServerURL "https://example.com/graphql" --appName optionalName
Opsi graphQLServerURL juga tersedia melalui variabel lingkungan yang disebut 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"
Anda juga dapat mengatur graphql playground di file parse-dashboard-config.json Anda:
{
"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 "
}
]
}Setelah memulai dasbor, Anda dapat mengunjungi http://0.0.0.0:4040/apps/mytestapp/api_console/graphql di browser Anda:

Parse Dashboard mendukung menambahkan ikon opsional untuk setiap aplikasi, sehingga Anda dapat mengidentifikasi mereka lebih mudah dalam daftar. Untuk melakukannya, Anda harus menggunakan file konfigurasi, menentukan iconsFolder di dalamnya, dan menentukan parameter iconName untuk setiap aplikasi (termasuk ekstensi). Jalur iconsFolder relatif terhadap file konfigurasi. Jika Anda telah menginstal Parsedashboard secara global, Anda perlu menggunakan jalur lengkap sebagai nilai untuk iconsFolder . Untuk memvisualisasikan apa artinya, dalam contoh berikut icons adalah direktori yang terletak di bawah direktori yang sama dengan file konfigurasi:
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App " ,
"iconName" : " MyAppIcon.png " ,
}
],
"iconsFolder" : " icons "
} Parse Dashboard mendukung menambahkan warna latar belakang opsional untuk setiap aplikasi, sehingga Anda dapat mengidentifikasi mereka lebih mudah dalam daftar. Untuk melakukannya, Anda harus menggunakan file konfigurasi, menentukan primaryBackgroundColor dan secondaryBackgroundColor di dalamnya, parameter untuk setiap aplikasi. Ini adalah CSS style . Untuk memvisualisasikan apa artinya, dalam contoh berikut backgroundColor adalah file konfigurasi:
{
"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
}
]
} Anda dapat mengatur appNameForURL dalam file konfigurasi untuk setiap aplikasi untuk mengontrol URL aplikasi Anda di dalam dasbor. Ini dapat membuatnya lebih mudah untuk menggunakan bookmark atau berbagi tautan di dasbor Anda.
Untuk mengubah aplikasi menjadi produksi, cukup atur production ke true di file konfigurasi Anda. Nilai default salah jika tidak ditentukan.
Anda dapat mencegah beberapa kolom preventSort diurut
"apps" : [
{
"appId" : " local_app_id " ,
"columnPreference" : {
"_User" : [
{
"name" : " createdAt " ,
"visible" : true ,
"preventSort" : true
},
{
"name" : " updatedAt " ,
"visible" : true ,
"preventSort" : false
},
]
}
}
] Jika Anda memiliki kelas dengan banyak kolom dan Anda sering memfilternya dengan kolom yang sama, Anda dapat mengurutkannya ke atas dengan memperluas pengaturan columnPreference dengan opsi filterSortToTop :
"apps" : [
{
"columnPreference" : {
"_User" : [
{
"name" : " objectId " ,
"filterSortToTop" : true
},
{
"name" : " email " ,
"filterSortToTop" : true
}
]
}
}
] Filter yang Anda simpan di browser data dasbor parse hanya tersedia untuk pengguna dasbor saat ini di sesi browser saat ini. Untuk membuat filter tersedia secara permanen untuk semua pengguna dasbor suatu aplikasi, Anda dapat menentukan filter dalam pengaturan classPreference .
Misalnya:
"apps" : [{
"classPreference" : {
"_Role" : {
"filters" : [{
"name" : " Filter Name " ,
"filter" : [
{
"field" : " objectId " ,
"constraint" : " exists "
}
]
}]
}
}
}]Anda dapat dengan mudah membuat definisi filter tanpa harus menulisnya dengan tangan dengan terlebih dahulu menyimpan filter di browser data, kemudian mengekspor definisi filter di bawah pengaturan aplikasi> preferensi kelas ekspor .
Anda dapat menentukan skrip untuk menjalankan fungsi cloud dengan opsi scripts :
"apps" : [
{
"scripts" : [
{
"title" : " Delete Account " ,
"classes" : [ " _User " ],
"cloudCodeFunction" : " deleteAccount " ,
"showConfirmationDialog" : true ,
"confirmationDialogStyle" : " critical "
}
]
}
] Anda juga dapat menentukan bidang khusus dengan opsi scrips :
"apps" : [
{
"scripts" : [
{
"title" : " Delete account " ,
"classes" : [
{
"name" : " _User " ,
"fields" : [
{ "name" : " createdAt " , "validator" : " value => value > new Date( " 2025 " ) " }
]
}
],
"cloudCodeFunction" : " deleteAccount "
}
]
}
]
Selanjutnya, tentukan fungsi cloud di server parse yang akan dipanggil. Objek yang telah dipilih di browser data akan tersedia sebagai parameter permintaan:
Parse . Cloud . define ( 'deleteAccount' , async ( req ) => {
req . params . object . set ( 'deleted' , true ) ;
await req . params . object . save ( null , { useMasterKey : true } ) ;
} , {
requireMaster : true
} ) ; Bidang yang diminta skrip dapat diakses oleh 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 ke true sehingga objek yang dipilih di browser data tersedia dalam fungsi cloud sebagai instance Parse.Object . Jika opsi tidak diatur, diatur ke false , atau Anda menggunakan versi yang lebih lama dari Parse Server, objek tersebut tersedia sebagai objek JavaScript biasa dan perlu dikonversi dari objek JSON ke instance Parse.Object dengan req.params.object = Parse.Object.fromJSON(req.params.object); , sebelum Anda dapat memanggil properti dan metode Parse.Object .
Untuk versi yang lebih lama dari server parse:
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 } ) ;
} ) ;Alih -alih memulai dasbor parse dengan CLI, Anda juga dapat menjalankannya sebagai middleware ekspres.
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 ) ;Jika Anda ingin menjalankan dasbor server parse dan parse di server/port yang sama, Anda dapat menjalankan keduanya sebagai middleware ekspres:
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 ) ; Pastikan URL server untuk aplikasi Anda dapat diakses oleh browser Anda. Jika Anda menggunakan dasbor, maka URL localhost tidak akan berfungsi.
Untuk menggunakan dasbor dengan aman tanpa membocorkan kunci master aplikasi Anda, Anda perlu menggunakan HTTPS dan otentikasi dasar.
Dasbor yang digunakan mendeteksi jika Anda menggunakan koneksi yang aman. Jika Anda menggunakan dasbor di belakang penyeimbang beban atau proxy yang menghadap ke depan, maka aplikasi tidak akan dapat mendeteksi bahwa koneksi aman. Dalam hal ini, Anda dapat memulai dasbor dengan opsi --trustProxy=1 (atau atur parse_dashboard_trust_proxy config var ke 1) untuk mengandalkan header X-Forwarded-* untuk keamanan koneksi klien. Ini berguna untuk hosting di layanan seperti Heroku, di mana Anda dapat mempercayai header proxy yang disediakan untuk menentukan dengan benar apakah Anda menggunakan HTTP atau HTTPS. Anda juga dapat menyalakan pengaturan ini saat menggunakan dasbor sebagai middleware ekspres:
var trustProxy = true ;
var dashboard = new ParseDashboard ( {
"apps" : [
{
"serverURL" : "http://localhost:1337/parse" ,
"appId" : "myAppId" ,
"masterKey" : "myMasterKey" ,
"appName" : "MyApp"
}
] ,
"trustProxy" : 1
} ) ; Anda dapat melihat status keamanan server parse Anda dengan mengaktifkan opsi dasbor enableSecurityChecks , dan Mengunjungi Pengaturan Aplikasi> Keamanan.
const dashboard = new ParseDashboard ( {
"apps" : [
{
"serverURL" : "http://localhost:1337/parse" ,
"appId" : "myAppId" ,
"masterKey" : "myMasterKey" ,
"appName" : "MyApp"
"enableSecurityChecks" : true
}
] ,
} ) ; Anda dapat mengonfigurasi dasbor Anda untuk otentikasi dasar dengan menambahkan nama pengguna dan kata sandi parse-dashboard-config.json file konfigurasi Anda:
{
"apps" : [{ "..." : " ... " }],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass "
},
{
"user" : " user2 " ,
"pass" : " pass "
}
],
"useEncryptedPasswords" : true | false
} Anda dapat menyimpan kata sandi dalam plain text atau format bcrypt . Untuk menggunakan format bcrypt , Anda harus mengatur parameter konfigurasi useEncryptedPasswords ke true . Anda dapat menghasilkan kata sandi terenkripsi dengan menggunakan parse-dashboard --createUser , dan menempelkan hasil di konfigurasi pengguna Anda.
Anda dapat menambahkan lapisan keamanan tambahan untuk akun pengguna dengan memerlukan otentikasi multi-faktor (MFA) untuk login.
Dengan diaktifkan MFA, pengguna harus memberikan kata sandi satu kali yang biasanya terikat pada perangkat fisik, di samping kata sandi login mereka. Ini berarti selain mengetahui kata sandi login, pengguna perlu memiliki akses fisik ke perangkat untuk menghasilkan kata sandi satu kali. Kata sandi satu kali ini berbasis waktu (TOTP) dan hanya berlaku untuk waktu yang singkat, biasanya 30 detik, sampai berakhir.
Pengguna membutuhkan aplikasi Authenticator untuk menghasilkan kata sandi satu kali. Aplikasi ini disediakan oleh banyak pihak ke -3 dan sebagian besar gratis.
Jika Anda membuat pengguna baru dengan menjalankan parse-dashboard --createUser , Anda akan ditanya apakah Anda ingin mengaktifkan MFA untuk pengguna baru. Untuk mengaktifkan MFA untuk pengguna yang ada, jalankan parse-dashboard --createMFA untuk menghasilkan rahasia mfa yang kemudian Anda tambahkan ke konfigurasi pengguna yang ada, misalnya:
{
"apps" : [{ "..." : " ... " }],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass " ,
"mfa" : " lmvmOIZGMTQklhOIhveqkumss "
}
]
} Parse Dashboard mengikuti standar industri dan mendukung algoritma OTP umum SHA-1 secara default, agar kompatibel dengan sebagian besar aplikasi authenticator. Jika Anda memiliki persyaratan keamanan khusus mengenai karakteristik TOTP (algoritma, panjang digit, periode waktu) Anda dapat menyesuaikannya dengan menggunakan konfigurasi berpemandu yang disebutkan di atas.
Jika Anda telah mengonfigurasi dasbor Anda untuk mengelola beberapa aplikasi, Anda dapat membatasi manajemen aplikasi berdasarkan identitas pengguna.
Untuk melakukannya, perbarui file konfigurasi parse-dashboard-config.json Anda agar sesuai dengan format berikut:
{
"apps" : [{ "..." : " ... " }],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass1 " ,
"apps" : [{ "appId" : " myAppId1 " }, { "appId" : " myAppId2 " }]
},
{
"user" : " user2 " ,
"pass" : " pass2 " ,
"apps" : [{ "appId" : " myAppId1 " }]
} ]
}Efek konfigurasi seperti itu adalah sebagai berikut:
Ketika user1 masuk, dia akan dapat mengelola myAppId1 dan myAppId2 dari dasbor.
Ketika user2 masuk, dia hanya akan dapat mengelola myAppId1 dari dasbor.
Mulai Parse-Server 2.6.5, dimungkinkan untuk memberikan readOnlyMasterKey untuk parse-server untuk mencegah mutasi pada objek dari klien. Jika Anda ingin melindungi dasbor Anda dengan fitur ini, cukup gunakan readOnlyMasterKey alih -alih masterKey . Semua panggilan menulis akan gagal.
Mulailah parse-server Anda
{
"masterKey" : " YOUR_MASTER_KEY_HERE " ,
"readOnlyMasterKey" : " YOUR_READ_ONLY_MASTER_KEY " ,
}Kemudian di konfigurasi dasbor Anda:
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
} ) ; Pastikan Anda menentukan readOnlyMasterKey untuk aplikasi yang ingin Anda gunakan fitur read-only di konfigurasi "Aplikasi". Anda dapat menandai pengguna sebagai pengguna hanya baca:
{
"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 " }]
}
]
} Dengan cara ini user1 akan memiliki akses hanya readyly ke myAppId1 dan myAppId2
Pastikan Anda menentukan readOnlyMasterKey untuk aplikasi yang ingin Anda gunakan fitur read-only di konfigurasi "Aplikasi". Anda dapat memberikan akses hanya baca kepada pengguna berdasarkan per aplikasi:
{
"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 " }]
}
]
} Dengan konfigurasi ini, User1 hanya akan membaca akses ke myAppId1 dan membaca/menulis akses ke myAppId2 .
Dengan versi terbaru dari dasbor, dimungkinkan untuk mengirim pesan lokal untuk pemberitahuan push. Anda dapat memberikan daftar lokal atau bahasa yang ingin Anda dukung untuk pengguna dasbor Anda.
{
"apps" : [
{
"serverURL" : " http://localhost:1337/parse " ,
"appId" : " myAppId " ,
"masterKey" : " myMasterKey " ,
"appName" : " My Parse Server App " ,
"iconName" : " MyAppIcon.png " ,
"supportedPushLocales" : [ " en " , " ru " , " fr " ]
}
],
"iconsFolder" : " icons "
}Gambar Docker resmi diterbitkan di Docker Hub
Jalankan gambar dengan config.json Anda dipasang sebagai volume
docker run -d -p 8080:4040 -v host/path/to/config.json:/src/Parse-Dashboard/parse-dashboard-config.json parseplatform/parse-dashboard --dev
Anda juga dapat melewati appid, masterkey dan serverUrl sebagai argumen:
docker run -d -p 4040:4040 parseplatform/parse-dashboard --dev --appId $APP_ID --masterKey $MASTER_KEY --serverURL $SERVER_URL
Secara default, wadah akan memulai aplikasi di port 4040 di dalam wadah. Namun, Anda dapat menjalankan perintah khusus juga (lihat Deploying in production untuk Pengaturan Kustom).
Dalam contoh ini, kami ingin menjalankan aplikasi dalam mode produksi di port 80 dari mesin host.
docker run -d -p 80:8080 -v host/path/to/config.json:/src/Parse-Dashboard/parse-dashboard-config.json parse-dashboard --port 8080 --dev
Jika Anda tidak terbiasa dengan Docker, --port 8080 akan diteruskan sebagai argumen ke titik masuk untuk membentuk perintah lengkap npm start -- --port 8080 . Aplikasi akan dimulai di port 8080 di dalam wadah dan port 8080 akan dipasang ke port 80 pada mesin host Anda.
(Berikut ini bukan daftar lengkap fitur tetapi pekerjaan yang sedang berlangsung untuk membangun daftar fitur yang komprehensif.)
Dialog filter memungkinkan untuk menambahkan kondisi filter relasional berdasarkan kelas lain yang memiliki pointer ke kelas saat ini.
Misalnya, pengguna di kelas _User mungkin memiliki:
Purchase dengan bidang pointer _UserPayment dengan bidang Pointer _UserFilter relasional memungkinkan Anda memfilter semua pengguna yang:
Purchase )Payment ) Untuk menerapkan filter seperti itu, cukup buka kelas _User dan tambahkan dua kondisi filter yang diperlukan dengan kelas Purchase dan Payment .
Browser data menawarkan panel info yang dapat menampilkan informasi yang terkait dengan objek yang saat ini dipilih dalam tabel browser data. Panel info dibuat terlihat dengan mengklik panel Tombol Tampilkan tombol menu di sudut kanan atas saat menjelajahi kelas di mana panel info dikonfigurasi dalam opsi dasbor.
Contoh konfigurasi dasbor berikut ini menunjukkan panel info untuk kelas _User dengan User Details judul, dengan memanggil fungsi kode cloud getUserDetails dan menampilkan respons yang dikembalikan.
"apps" : [
{
"infoPanel" : [
{
"title" : " User Details " ,
"classes" : [ " _User " ],
"cloudCodeFunction" : " getUserDetails "
}
]
}
]Fungsi kode cloud menerima objek yang dipilih dalam muatan dan mengembalikan respons yang dapat mencakup berbagai item.
Panel info dapat berisi beberapa segmen untuk menampilkan berbagai kelompok informasi.
| Parameter | Nilai | Opsional | Keterangan |
|---|---|---|---|
segments | Array | TIDAK | Array segmen yang dipesan, di mana setiap segmen mewakili kelompok item yang berbeda untuk ditampilkan. |
segments[i].title | Rangkaian | TIDAK | Judul segmen yang akan ditampilkan. |
segments[i].items | Array | TIDAK | Serangkaian item yang dipesan di dalam segmen. Setiap item dapat dari berbagai jenis, seperti teks, pasangan nilai kunci, tabel, gambar, dll. |
Contoh:
{
"panel" : {
"segments" : [
{
"title" : " Purchases " ,
"items" : [
{
"type" : " text " ,
"text" : " This user has a high churn risk! "
}
]
}
]
}
}Array item dapat mencakup berbagai jenis konten seperti teks, pasangan nilai kunci, tabel, gambar, video, audio, dan tombol. Setiap jenis menawarkan cara berbeda untuk menampilkan informasi di dalam panel info, memungkinkan pengalaman pengguna yang dapat disesuaikan dan kaya. Di bawah ini adalah penjelasan terperinci dari masing -masing jenis.
Bidang teks sederhana.
| Parameter | Nilai | Opsional | Keterangan |
|---|---|---|---|
type | Rangkaian | TIDAK | Harus "text" . |
text | Rangkaian | TIDAK | Teks yang akan ditampilkan. |
Contoh:
{
"type" : " text " ,
"text" : " This user has a high churn risk! "
}Item teks yang terdiri dari kunci dan nilai. Nilai secara opsional dapat ditautkan ke URL.
| Parameter | Nilai | Opsional | Keterangan |
|---|---|---|---|
type | Rangkaian | TIDAK | Harus "keyValue" . |
key | Rangkaian | TIDAK | Teks kunci untuk ditampilkan. |
value | Rangkaian | TIDAK | Teks nilai yang akan ditampilkan. |
url | Rangkaian | Ya | URL yang akan dibuka di tab browser baru saat mengklik teks nilai. |
Contoh:
{
"type" : " keyValue " ,
"key" : " Lifetime purchase value " ,
"value" : " $10k "
}{
"type" : " keyValue " ,
"key" : " Last purchase ID " ,
"value" : " 123 " ,
"url" : " https://example.com/purchaseDetails?purchaseId=012345 "
}Tabel dengan kolom dan baris untuk menampilkan data dalam format terstruktur.
| Parameter | Nilai | Opsional | Keterangan |
|---|---|---|---|
type | Rangkaian | TIDAK | Harus "table" . |
columns | Array | TIDAK | Definisi kolom, termasuk nama dan jenis. |
columns[*].name | Rangkaian | TIDAK | Nama kolom yang akan ditampilkan. |
columns[*].type | Rangkaian | TIDAK | Jenis nilai kolom (misalnya, "string" , "number" ). |
rows | Array | TIDAK | Baris data, di mana setiap baris adalah objek yang berisi nilai untuk setiap kolom. |
Contoh:
{
"type" : " table " ,
"columns" : [
{
"name" : " Name " ,
"type" : " string "
},
{
"name" : " Age " ,
"type" : " number "
}
],
"rows" : [
{
"Name" : " Alice " ,
"Age" : 30
},
{
"Name" : " Bob " ,
"Age" : 40
}
]
}Gambar yang akan ditampilkan di panel.
| Parameter | Nilai | Opsional | Keterangan |
|---|---|---|---|
type | Rangkaian | TIDAK | Harus "image" . |
url | Rangkaian | TIDAK | URL gambar yang akan ditampilkan. |
Contoh:
{
"type" : " image " ,
"url" : " https://example.com/images?purchaseId=012345 "
}Sebuah video yang akan ditampilkan di panel.
| Parameter | Nilai | Opsional | Keterangan |
|---|---|---|---|
type | Rangkaian | TIDAK | Harus "video" . |
url | Rangkaian | TIDAK | URL video untuk ditampilkan. |
Contoh:
{
"type" : " video " ,
"url" : " https://example.com/video.mp4 "
}File audio yang akan dimainkan di panel.
| Parameter | Nilai | Opsional | Keterangan |
|---|---|---|---|
type | Rangkaian | TIDAK | Harus "audio" . |
url | Rangkaian | TIDAK | URL audio untuk dimainkan. |
Contoh:
{
"type" : " audio " ,
"url" : " https://example.com/audio.mp3 "
}Tombol yang memicu tindakan saat diklik.
| Parameter | Nilai | Opsional | Keterangan |
|---|---|---|---|
type | Rangkaian | TIDAK | Harus "button" . |
text | Rangkaian | TIDAK | Teks untuk ditampilkan pada tombol. |
action | Obyek | TIDAK | Tindakan yang akan dilakukan saat tombol diklik. |
action.url | Rangkaian | TIDAK | URL yang harus dikirim permintaan. |
action.method | Rangkaian | TIDAK | Metode HTTP untuk digunakan untuk tindakan (misalnya, "POST" ). |
action.headers | Obyek | Ya | Header opsional untuk dimasukkan dalam permintaan. |
action.body | Obyek | Ya | Tubuh permintaan dalam format JSON. |
Contoh:
{
"type" : " button " ,
"text" : " Click me! " ,
"action" : {
"url" : " https://api.example.com/click " ,
"method" : " POST " ,
"headers" : {
"Content-Type" : " application/json "
},
"body" : {
"key" : " value "
}
}
}Fitur ini memungkinkan Anda untuk menggunakan browser data sebagai pengguna lain, menghargai izin data pengguna itu. Misalnya, Anda hanya akan melihat catatan dan bidang yang memiliki izin untuk dilihat oleh pengguna.
️ Masuk sebagai pengguna lain akan memicu cloud yang sama memicu seolah -olah pengguna masuk sendiri menggunakan metode login lainnya. Masuk sebagai pengguna lain perlu memasukkan kata sandi pengguna itu.
Fitur ini memungkinkan Anda untuk mengubah cara pointer diwakili di browser. Secara default, pointer diwakili oleh objectId dari objek yang ditautkan. Anda dapat mengubah ini ke kolom lain dari kelas objek. Misalnya, jika Installation kelas memiliki bidang yang berisi pointer ke User kelas, pointer akan menampilkan objectId pengguna secara default. Anda dapat mengubah ini untuk menampilkan email lapangan pengguna, sehingga pointer menampilkan alamat email pengguna.
objectId .createdAt , updatedAt , ACL tidak dapat diatur sebagai kunci pointer.objectId .
️ Untuk setiap kunci penunjuk khusus di setiap baris, permintaan server dipicu untuk menyelesaikan kunci penunjuk khusus. Misalnya, jika browser menunjukkan kelas dengan 50 baris dan setiap baris berisi 3 kunci penunjuk khusus, total 150 permintaan server terpisah dipicu.
Fitur ini akan mengambil baris yang dipilih atau semua baris kelas individu dan menyimpannya ke file CSV, yang kemudian diunduh. Header CSV ditambahkan ke bagian atas file yang cocok dengan nama kolom.
️ Saat ini ada batas 10.000 baris saat mengekspor semua data. Jika lebih dari 10.000 baris ada di kelas, file CSV hanya akan berisi 10.000 baris.
Kami benar -benar ingin Purse menjadi milik Anda, melihatnya tumbuh dan berkembang di komunitas open source. Silakan lihat Panduan Dasbor Parse yang berkontribusi.
Pada 5 April 2017, Parse, LLC telah mentransfer kode ini ke organisasi parse-community, dan tidak akan lagi berkontribusi atau mendistribusikan kode ini.