我对维护Parse很陌生,但我已经疯了;)
我们有一个在debian机器上的parsing服务器设置。 它运行nginx并使用pm2来部署Parse。 Parse-Dashboard运行良好,即使我们的parsing服务器也在popup它的mongodb。 但是,服务器似乎并没有为我们工作。 我们可以访问domain.com/parse/serverinfo ,例如domain.com/parse/users ,它会向我们显示正确的用户列表。 然而,从我们的云代码调用我们的任何function是不可能的,这是行不通的。
我一直在searchgoogling和googling这个问题,而我似乎能find的最多的人是他们的index.js中的mount参数configuration不正确。 但是,我们并不是这样。
这是我们的index.js:
// 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 path = require('path'); var S3Adapter = require('parse-server').S3Adapter; var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI; if (!databaseUri) { console.log('DATABASE_URI not specified, falling back to localhost.'); } var protocol = process.env.HTTPS ? 'https://' : 'http://'; var port = process.env.PORT || 1337; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; var api = new ParseServer({ databaseURI: databaseUri || 'mongodb://****:****@api.domain.com:27017/parse' || 'mo$ cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js', appId: process.env.APP_ID || '*****', masterKey: process.env.MASTER_KEY || '*****', //Add your master$ fileKey: process.env.FILE_KEY || '*****', serverURL: 'http://api.domain.com:' + port + '/parse' || process.env.SERVER_URL || protocol + $ liveQuery: { classNames: ["Posts", "Comments"] }, publicServerURL: 'http://api.domain.com:' + port + '/parse', filesAdapter: new S3Adapter( "*****", "/*****/*****", "*****", { directAccess: true } ) }); var app = express(); var publicServerURL = "http://api.domain.com:1337/parse"; app.use('/public', express.static(path.join(__dirname, '/public'))); console.log("Mounth path: " + process.env.PARSE_MOUNT); var mountPath = process.env.PARSE_MOUNT || '/parse'; app.use(mountPath, api); app.get('/', function(req, res) { res.status(200).send('I dream of being a website. Please star the parse-server repo on GitHub!'); }); app.get('/test', function(req, res) { res.sendFile(path.join(__dirname, '/public/test.html')); }); console.log('serverUrl configured as', protocol + 'localhost:' + port + '/parse'); var httpServer = require('http').createServer(app); httpServer.listen(port, function() { console.log('parse-server-example running on port ' + port + '.'); }); ParseServer.createLiveQueryServer(httpServer);
Nginx的configuration是:
# HTTP - redirect all requests to HTTPS server { listen 80; listen [::]:80 default_server ipv6only=on; return 301 https://$host$request_uri; } # HTTPS - serve HTML from /usr/share/nginx/html, proxy requests to /parse/ # through to Parse Server server { listen 443; server_name api.domain.com; root /usr/share/nginx/html; index index.html index.htm; ssl on; ssl_certificate /etc/nginx/certificates/api.domain.com.crt; ssl_certificate_key /etc/nginx/certificates/api.domain.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; # Pass requests for /parse/ to Parse Server instance at localhost:1337 location /parse/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://localhost:1337/parse/; proxy_ssl_session_reuse off; proxy_set_header Host $http_host; proxy_redirect off; } location / { try_files $uri $uri/ =404; } location /dashboard/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://00.000.00.000:4040/dashboard/; proxy_ssl_session_reuse off; proxy_set_header Host $http_host; proxy_redirect off; } }
我无法弄清楚在configuration中我们有什么不正确的,为什么parse/users和parse/serverinfo 服务器信息工作
parsing服务器不处理 /functions GET 。 相反,您可以通过POST /functions/your_function_name调用您的云代码文件中预定义的所有云function。 你可以在这里find更多关于云代码的细节。
大多数SDK提供了一个机制来与云代码进行交互,为您处理这个问题。 根据您使用的是哪个sdk(或直接使用REST),您可以查看文档以获取更多详细信息。