



解析仪表板是用于管理Parse Server应用程序的独立仪表板。
从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上运行解析仪表板时,此参数很有用。使用此参数将:
allowInsecureHTTPmasterKey在无加密的情况下传输在ClearText中
配x 在生产环境中部署解析仪表板时,请勿使用此参数。
启动仪表板后,您可以在浏览器中访问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 | 数组<Object> | 不 | - | [{ ... }, { ... }] | 为仪表板配置的应用程序。 |
infoPanel | 数组<Object> | 是的 | - | [{ ... }, { ... }] | 信息面板配置。 |
infoPanel[*].title | 细绳 | 不 | - | User Details | 面板标题。 |
infoPanel[*].classes | 数组<string> | 不 | - | ["_User"] | 应该显示信息面板的类。 |
infoPanel[*].cloudCodeFunction | 细绳 | 不 | - | getUserDetails | 在数据浏览器中接收所选对象的云代码功能,并返回要在信息面板中显示的响应。 |
apps.scripts | 数组<Object> | 是的 | [] | [{ ... }, { ... }] | 可以为该应用执行的脚本。 |
apps.scripts.title | 细绳 | 不 | - | 'Delete User' | 将显示在数据浏览器上下文菜单和脚本运行确认对话框中的标题。 |
apps.scripts.classes | 数组<string> | 不 | - | ['_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-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 "
}
]
}Parse仪表板具有一个内置的GraphQl操场,可与自动生成的Parse GraphQl API一起玩。
您可以通过将--graphQLServerURL选项传递到parse-dashboard CLI:
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操场:
{
"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 "
}解析仪表板支持为每个应用程序添加可选的背景颜色,因此您可以在列表中更容易识别它们。为此,您必须使用配置文件,在其中定义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
},
]
}
}
]如果您有很多列的类,并且经常使用相同的列过滤它们,则可以通过使用filterSortToTop选项扩展columnPreference设置将其分类到顶部:
"apps" : [
{
"columnPreference" : {
"_User" : [
{
"name" : " objectId " ,
"filterSortToTop" : true
},
{
"name" : " email " ,
"filterSortToTop" : true
}
]
}
}
]您保存在解析仪表板的数据浏览器中的过滤器仅适用于当前浏览器会话中的当前仪表板用户。为了使应用程序的所有仪表板用户永久使用过滤器,您可以在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对象转换为Parse.Object req.params.object = Parse.Object.fromJSON(req.params.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启动解析仪表板。
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 Mifdreware运行:
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中间件时打开此设置:
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格式,必须将配置useEncryptedPasswords参数设置为true 。您可以使用parse-dashboard --createUser生成加密密码,并将结果粘贴到您的用户配置中。
您可以通过需要多因素身份验证(MFA)供用户登录来为用户帐户添加额外的安全层。
使用启用MFA,用户除登录密码外,还必须提供一个通常与物理设备绑定的一次性密码。这意味着除了了解登录密码外,用户还需要对设备进行物理访问以生成一次性密码。此一次性密码是基于时间的(TOTP),仅在短时间内有效,通常为30秒,直到到期为止。
用户需要一个身份验证器应用程序来生成一次性密码。这些应用程序由许多第三方提供,主要是免费的。
如果您通过运行parse-dashboard --createUser创建新用户,则将询问您是否要为新用户启用MFA。要为现有用户启用MFA,请运行parse-dashboard --createMFA生成mfa秘密,然后将其添加到现有用户配置中,例如:
{
"apps" : [{ "..." : " ... " }],
"users" : [
{
"user" : " user1 " ,
"pass" : " pass " ,
"mfa" : " lmvmOIZGMTQklhOIhveqkumss "
}
]
}解析仪表板遵循行业标准,默认情况下支持常见的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 。
启动解析服务器2.6.5,可以提供一个readOnlyMasterKey来解析服务器,以防止客户对象上的突变。如果要使用此功能保护仪表板,只需使用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类中的用户可能有:
_User指针字段在Purchase课上购买_User指针字段的Payment类中的交易关系过滤器使您可以过滤所有以下用户:
Purchase班上)Payment类中)要应用这样的过滤器,只需转到_User类,然后在Purchase和Payment类中添加两个必需的过滤条件。
数据浏览器提供了一个信息面板,可以在数据浏览器表中显示与当前选择的对象相关的信息。通过单击右上角的“菜单”按钮显示面板在浏览仪表板选项中配置信息面板时,可以看到信息面板。
以下示例仪表板配置通过调用云代码User Details getUserDetails并显示返回的响应,显示了_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 | 细绳 | 不 | 视频的网址要显示。 |
例子:
{
"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 "
}
}
}此功能使您可以将数据浏览器用作另一个用户,并尊重该用户的数据权限。例如,您只会看到用户有权查看的记录和字段。
配x 登录另一个用户将触发相同的云触发器,就像用户使用任何其他登录方法登录自己一样。登录另一个用户需要输入该用户的密码。
此功能使您可以更改指针在浏览器中表示的方式。默认情况下,指针由链接对象的objectId表示。您可以将其更改为对象类的任何其他列。例如,如果类Installation字段包含指向类User的指针,则指针将默认情况下显示用户的objectId 。您可以更改此信息以显示用户的字段email ,以便指针显示用户的电子邮件地址。
objectId 。createdAt , updatedAt , ACL类的系统列无法将其设置为指针密钥。objectId 。
配x 对于每行的每个自定义指针键,触发服务器请求以解决自定义指针键。例如,如果浏览器显示一个具有50行的类,并且每行包含3个自定义指针键,则触发总共150个单独的服务器请求。
此功能将采用选定的行或单个类的所有行,并将其保存到CSV文件中,然后下载。 CSV标头添加到与列名称匹配的文件顶部。
配x 导出所有数据时,目前有10,000行限制。如果同类中有10,000多行,则CSV文件仅包含10,000行。
我们真的希望Parse成为您的,看到它在开源社区中成长和壮成长。请参阅解析仪表板指南的贡献。
截至2017年4月5日,Parse,LLC已将此代码转移到Parse-Community组织,并且将不再为此代码做出贡献或分发。