解析服务器和 node.js 基础知识入门
Posted
技术标签:
【中文标题】解析服务器和 node.js 基础知识入门【英文标题】:Getting started with parse server and node.js basics 【发布时间】:2019-03-25 01:28:42 【问题描述】:我从 AWS 市场安装了 bitnami 解析服务器,为 ios 应用程序提供后端。在 iOS 应用程序中,API 配置在 http://myURL.com/parse 下,当我转到我认为的主页 http://myURL.com 时,它会将我重定向到位于 http://myURL.com/apps 的解析仪表板。我想让http://myURL.com 为我的应用程序提供主页,而不是重定向到解析仪表板,以便可以构建一个共享应用程序使用的相同数据的 Web 应用程序。这是我第一个使用 node.js 的项目,所以我希望有人能在几个主题上为我指明正确的方向。我以前的 Web 应用程序工作总是在 LAMP 堆栈上,所以我很好奇:
我是否正确假设 iOS 使用的解析后端也可以是通过浏览器访问的 Web 应用程序的后端? 当我在 /home/bitnami/apps/parse/htdocs 分析 server.js 中的代码时,我没有看到重定向到 myURL.com/apps 的函数,是否应该关注其他领域了解 myURL.com 如何重定向到应用程序文件夹? 我注意到 /home/binami/apps/rockmongo 中存在一个文件夹,其中包含 php 脚本的安装说明,我的 AWS 实例可以运行 php 和 node.js 还是安装 LAMP 堆栈会干扰 node.js 堆栈? 我确信有一些很棒的文档和/或教程,您能否通过提供正确的方式来表达 google 搜索或更好地提供指向教程本身的任何链接来帮助我开始?对于上下文,我的 iOS 允许用户登录并让他们上传图像以解析服务器类,我只是想让用户登录并使用具有用户/文件类的相同解析服务器从 Web 浏览器上传图像.
下面的参考是 server.js,它似乎以某种方式将请求从 myURL.com 定向到 myURL.com/apps:
require('dotenv').config();
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var app = express();
// Specify the connection string for your mongodb database
// and the location to your Parse cloud code
var api = new ParseServer(
databaseURI: "mongodb://root:9dh********@127.0.0.1:27017/bitnami_parse",
cloud: "./node_modules/parse-server/lib/cloud-code/Parse.Cloud.js",
appId: "19defd7********",
masterKey: "cd8********",
fileKey: "3bce6********",
serverURL: "http://54.**.**.**:80/parse",
filesAdapter:
"module": "@parse/s3-files-adapter",
"options":
"bucket": process.env.S3_BUCKET,
,
);
// Serve the Parse API on the /parse URL prefix
app.use('/parse', api);
var port = 1337;
app.listen(port, function()
console.log('parse-server running on port ' + port);
);
//Parse Dashboard
var ParseDashboard = require('parse-dashboard');
var dashboard = new ParseDashboard(
apps: [
appName: "My Bitnami Parse API",
appId: "19defd7********",
masterKey: "cd8d*******",
fileKey: "3bce6********",
production: true,
serverURL: "http://54.**.**.**:80/parse"
],
users: [
user: process.env.ADMIN_USER,
pass: process.env.ADMIN_PASSWORD
], useEncryptedPasswords: true
);
var allowInsecureHTTP = true;
// Serve the Parse Dashboard on the /parsedashboard URL prefix
app.use('/', dashboard);
var portdash = 4040;
app.listen(portdash, function()
console.log('parse-dashboard running on port ' + portdash);
);
【问题讨论】:
【参考方案1】:Parse Dashboard 的挂载点在这一行中定义:
app.use('/', dashboard);
当您想为仪表板使用单独的挂载点时,您可以这样做:
app.use('/dashboard', dashboard);
更改后,如果您点击http://myURL.com/dashboard,它将在 /dashboard/apps 中加载仪表板。 '/apps' 端点由解析仪表板本身处理。
现在,如果您想在根路由 (/) 或 http://myURL.com 中加载您的网站,您需要创建另一个路由(假设您现在要提供静态网站)
app.use('/public', express.static(path.join(__dirname, '/public'),
etag: true
));
app.get('/', function (req, res)
res.sendFile(path.join(__dirname, '/public/index.html'));
);
要为静态站点提供服务,您需要创建一个文件夹,您将从该文件夹中为静态站点提供服务。在这种情况下,我创建了一个名为 public 的文件夹,并将我所有的 html、css、js 放在那里。现在我需要在 express 中指定静态文件夹。这就是我在第一行所做的。之后,我只需通过创建“GET”路由来提供 index.html。
您还可以做很多其他事情,例如创建 API 或为动态网站提供服务以及使用解析服务器。但要做到这一点,您必须首先了解使用 nodejs 的 express 框架。
更新: Parse API 和 Dashboard 是两个独立的东西。您只能在没有仪表板的情况下运行 parse-server,反之亦然。在您的代码中,您将解析服务器安装在 /parse 端点中。看看这一行
app.use('/parse', api);
所以现在解析服务器在 /parse 端点中可用。你可以把它改成任何东西。为解析服务器和仪表板创建单独的端点。
【讨论】:
改变 app.use('/',dashboard);是解决方案,我只想注意新名称(例如 app.use('/dashboard', dashboard);)不能以字符串“parse”开头。我试图这样做,不得不四处搜索以找出它为什么不起作用,所以认为这是一个很好的评论。 @DanielPatriarca 查看答案的更新部分。以上是关于解析服务器和 node.js 基础知识入门的主要内容,如果未能解决你的问题,请参考以下文章