(要明确的是,我问这个问题,以便提供我为帮助其他同样受Parse闭包影响的人而找到的答案)
Parse.com最近宣布他们将于2017年1月关闭商店,但幸运的是他们已经发布了Parse Server software open source所以我们都可以托管我们自己的Parse服务器实例。
我已经研究了可用于托管Parse Server的各种选项,并决定在Heroku上托管我的
我喜欢Parse,因为它很容易使用,而且我没有设置后端的真实经验。我曾尝试在线跟踪几个指南,但发现它们有点难以理解,模糊的步骤或步骤会让你在另一个安装了大量工具的网站上挖洞,这一切都让人感到有些困惑。
如何在heroku上托管Parse Server,将其设置为接受来自我的应用程序的跨域请求,创建MongoDB数据库,以及将我的所有数据从Parse迁移到新数据库?
答案 0 :(得分:57)
https://www.parse.com/apps/<APP_NAME>/edit#keys
处找到<APP_NAME>
,其中$ heroku login
是您应用的名称。如果您要创建新应用,则可以generate random keys here。您可以为计划使用的任何sdks添加新密钥,我在这里为javascript sdk添加一个密钥。 $ heroku git:clone -a <MY_APP_NAME>
,输入您的Heroku电子邮件和密码输入<MY_APP_NAME>
(其中$ cd <MY_APP_NAME>
是您的heroku应用程序的名称)来制作服务器代码仓库的本地副本,您也可以使用我们之前看到的git url。克隆存储库时,您将看到消息&#34;警告:您似乎克隆了一个空存储库。&#34;。将创建app文件夹,但它只包含标准git文件而不包含解析服务器。解决这个问题。转到official parse-server-example git repo,下载回购的 zip文件。解压缩文件夹,将所有文件和文件夹从parse-server-example-master文件夹拖到app文件夹中。
返回终端,输入package.json
进入回购
"cors": "*"
并将dependencies
添加到 "dependencies": {
"express": "~4.2.x",
"kerberos": "~0.0.x",
"parse": "~1.6.12",
"parse-server": "~2.0", // <= don't forget this comma
"cors": "*" // add this line
}
,如下所示:
index.js
请确保在实际代码中删除上述注释,因为它不是有效的JSON
var express = require('express'); // find this line in the file
var cors = require('cors') // add this line below it
//....
//var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI // old name, you may need to change this for new deployments
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI // changed to MONGODB_URI in Heroku!
//....
var app = express(); // find this line in the file
app.use(cors()); // add this line below it
//Add declarations for any keys you plan to use as shown below
var api = new ParseServer({
databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'myAppId',
masterKey: process.env.MASTER_KEY || '',
serverURL: process.env.SERVER_URL || 'http://localhost:1337',
javascriptKey: process.env.JAVASCRIPT_KEY || '', //** add this line no need to set values, they will be overwritten by heroku config vars
restAPIKey: process.env.REST_API_KEY || '', //** add this line
dotNetKey: process.env.DOT_NET_KEY || '', //** add this line
clientKey: process.env.CLIENT_KEY || '', //** add this line
});
并进行以下更改:
$ git add .
$ git commit -am "make it better"
$ git push heroku master
<MY_APP_ID>
<MY_JS_KEY>
,<MY_HEROKU_APP_NAME>
,Parse.initialize('<MY_APP_ID>', '<MY_JS_KEY>');
Parse.serverURL = 'https://<MY_HEROKU_APP_NAME>.herokuapp.com/Parse'
更改为您应用的相应值,然后点击&#34;运行&#34;
files
如果您将jsfiddle工具与多个解析服务器实例一起使用,则可能会收到错误&#34;无效的会话令牌&#34;。如果发生这种情况,请打开开发控制台,并删除所有&#34;解析&#34;来自本地存储的密钥,之后,它应该工作:
在迁移生产应用之前,您应该使用测试应用至少执行一次此操作。此外,旧应用中的遗留https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources
似乎尚未转移,请参阅this GitHub Issue
https://dashboard.parse.com/apps/<APP_NAME>/settings/general
,单击&#34; MongoLab&#34;在它旁边的图标上,然后在下一页上,点击&#34;删除所有馆藏&#34; <APP_NAME>
,其中MONGOLAB_URI
是解析应用的名称