forked from parse-community/parse-server-example
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
100 lines (73 loc) · 2.62 KB
/
index.js
File metadata and controls
100 lines (73 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Example express application adding the parse-server module to expose Parse
// compatible API routes.
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var ParseDashboard = require('parse-dashboard');
var Parse = require('parse/node');
var path = require('path');
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI;
if (!databaseUri) {
console.log('DATABASE_URI not specified, falling back to localhost.');
}
// Client-keys like the javascript key or the .NET key are not necessary with parse-server
// If you wish you require them, you can set them as options in the initialization above:
// javascriptKey, restAPIKey, dotNetKey, clientKey
var app = express();
// Serve static assets from the /public folder
app.use('/public', express.static(path.join(__dirname, '/public')));
var allowInsecureHTTP = false;
var port = process.env.PORT || 1337;
var httpServer = require('http').createServer(app);
httpServer.listen(1337, function() {
console.log('parse-server-example running on port ' + port + '.');
});
const runningParses = {};
function reload(app, appId, masterKey) {
if (!appId || !masterKey) {
return;
}
if (runningParses[appId]) {
console.warn(appId + '已经在运行');
return;
}
runningParses[appId] = appId;
var api = new ParseServer({
databaseURI: databaseUri || 'mongodb://localhost:27017/' + appId,
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: appId,
masterKey: masterKey, //Add your master key here. Keep it secret!
serverURL: 'http://localhost:1337/' + appId, // Don't forget to change to https if needed
liveQuery: {
classNames: ["Posts", "Comments"] // List of classes to support for query subscriptions
}
});
var dashboard = new ParseDashboard({
"apps": [
{
"serverURL": 'http://localhost:1337/' + appId,
"appId": appId,
"masterKey": masterKey,
"appName": appId
}
]
}, allowInsecureHTTP);
app.use('/' + appId, api);
app.use('/dashboard-' + appId + '', dashboard);
}
Parse.initialize('admin', 'admin');
Parse.serverURL = 'http://localhost:1337/admin';
reload(app, 'admin', 'admin');
setInterval(()=>{
new Parse.Query(new Parse.Object('ParseInfo')).find().then(items => {
items.map((item, index) => {
var appId = item.get('appId');
var masterKey = item.get('masterKey');
console.log(appId, masterKey, index);
reload(app, appId, masterKey);
});
}, e=> {
console.log(e);
});
}, 1000);
// This will enable the Live Query real-time server
ParseServer.createLiveQueryServer(httpServer);