Node.js 如何使用MongoDB在Heroku上托管自己的解析服务器?
(要清楚,我问这个问题是为了提供我在帮助其他同样受到解析闭包影响的人时找到的答案) 最近,他们宣布将于2017年1月关门,但谢天谢地,他们已经做出了自己的决定,这样我们都可以托管自己的解析服务器实例 我已经研究了托管解析服务器的各种可用选项,并决定在Heroku上托管我的解析服务器 我喜欢解析,因为它非常容易使用,而且我没有设置后端的实际经验。我试着在网上阅读了几本指南,但发现它们都有点难以理解,因为有些模糊的步骤或步骤会让你在另一个网站上陷入困境,安装了很多工具,这一切都有点让人困惑 我如何在heroku上托管Parse Server,将其设置为接受来自我的应用程序的跨域请求,创建MongoDB数据库,并将我的所有数据从Parse迁移到新数据库?heroku上的自托管Parse ServerNode.js 如何使用MongoDB在Heroku上托管自己的解析服务器?,node.js,mongodb,heroku,parse-platform,parse-server,Node.js,Mongodb,Heroku,Parse Platform,Parse Server,(要清楚,我问这个问题是为了提供我在帮助其他同样受到解析闭包影响的人时找到的答案) 最近,他们宣布将于2017年1月关门,但谢天谢地,他们已经做出了自己的决定,这样我们都可以托管自己的解析服务器实例 我已经研究了托管解析服务器的各种可用选项,并决定在Heroku上托管我的解析服务器 我喜欢解析,因为它非常容易使用,而且我没有设置后端的实际经验。我试着在网上阅读了几本指南,但发现它们都有点难以理解,因为有些模糊的步骤或步骤会让你在另一个网站上陷入困境,安装了很多工具,这一切都有点让人困惑 我如何在
设置Heroku、MongoDB和Parse
https://www.parse.com/apps/. 您可以为您计划使用的任何sdk添加新键,我在这里为javascript sdk添加一个
$heroku login
,输入heroku电子邮件和密码
$heroku git:clone-a
(其中
是您的heroku应用程序的名称)以制作服务器代码repo的本地副本,您还可以使用前面看到的git url。克隆回购时,您将看到消息“警告:您似乎克隆了一个空存储库。”。将创建应用程序文件夹,但它只包含标准git文件,不包含解析服务器。来解决这个问题。转到,下载回购协议的zip文件。提取文件夹,将所有文件和文件夹从parse server example主文件夹拖动到应用程序文件夹中
$cd
进入回购
package.json
并将“cors”:“*”
添加到依赖项中,如下所示:
测试您的新解析服务器
,
,
更改为应用程序的相应值,然后单击“运行”Parse.initialize(“”,”);
Parse.serverURL=https://.herokuapp.com/Parse'
从Parse迁移现有数据 在迁移生产应用程序之前,您应该对测试应用程序至少执行一次此操作。此外,旧应用程序中的遗留
文件可能尚未传输,请参阅
在我们迁移之前,如果您的新MongoDB中有数据,迁移将失败。如果您刚刚测试了服务器并创建了一个对象,请转到https://dashboard.heroku.com/apps//resources
,单击图标旁边的“MongoLab”,然后在下一页上单击“删除所有收藏”
转到https://dashboard.parse.com/apps/
迁移完成后,单击“Finalize”,然后在弹出窗口中单击“OK”,迁移完成后,所有数据都将保存在新的MongoDB数据库中
现在,您的分析仪表板将继续显示您现在位于新数据库中的数据。要测试所有内容,请返回我们以前使用的测试JSFIDLE并再次运行它。现在,转到Parse仪表板,您应该会看到新添加的类和行注意当我使用新的解析仪表板时,我可以看到行数,但行区域都是空白的。我回到了旧的分析仪表板,可以看到一切都很好。
"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
}
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
Parse.initialize('<MY_APP_ID>', '<MY_JS_KEY>');
Parse.serverURL = 'https://<MY_HEROKU_APP_NAME>.herokuapp.com/Parse'