我需要构建一个具有多个URL的应用程序,例如,我有大约10000个表单,我需要为每个表单分配不同的URL。我怎样才能做到这一点?我最近开始学习nodejs。所以...请提供我应该做的所有事情的深入描述?
事实上,我需要创建多个表单,其中包含名称和地址等参数。我需要它们显示在一个页面上。我使用expressjs和mysql db。
总的来说,我有一个index.js页面,它提示用户输入他的姓名和地址。我需要为每个用户提供不同的URL。在另一个页面中,我需要在一个页面上显示所有用户及其各自的URL。
答案 0 :(得分:1)
有许多不同的方法来做你想要做的事情,你要做的事情有三个真正的困难,第一个是制定路由,第二个是解析表格,第三个是存储数据。
首先,您需要正确路由所有请求。有许多不同的方法可以实现这一目标。 您可以研究的第一种方法是自己完成所有路由(我真的不建议这样做,但值得了解):
// First we will make a server.
const server = http.createServer();
// Then we will listen for every request.
server.on('request', (request, response) => {
// You can process the 'request.url' yourself here
// For example:
if (request.url.startsWith('/route1')) {
doRoute1(request, response);
} else if (request.url.startsWith('/route2')) {
doRoute2(request, response);
} else {
throw404();
}
// Or you can do a switch/case, for example:
// 'request.url.split('/')[1]' means find the first directory/file
// '/path/file.js' -> 'path'
// '/file.js' -> 'file.js'
switch (request.url.split('/')[1]) {
case 'route1':
doRoute2(request, response);
break;
case 'route2':
doRoute2(request, response);
break;
default:
throw404();
break;
}
});
// 'Listen' for connections to the server on port 80.
server.listen(80);
现在,该方法仅适用于最简单的应用程序,否则应避免使用,因为它将成为维护的噩梦。
第二个选项是使用http esq路由框架,示例包括https://jsfiddle.net/w2hoqmts/,Koa和Connect。
这是前一个使用“Express”的示例:
// Import the express module
const app = require('express')();
// Here is the routing section.
app.get('/route1', doRoute1);
app.get('/route2', doRoute2);
// This is a catch all if none of the routes are matched
app.use(throw404);
// Listen on port 80
app.listen(80);
Express对于更复杂的任务非常有用,因为它使用中间件esq流/结构的方式。
有许多不同的方式可以将数据发布到Web服务器,这些方法包括(但不限于); JSON,XML,URL编码和multipart / form-data。 在您开始尝试使用其中任何一个之前,我建议您确定最适合您当前用例的内容。
你提到了表单,所以我假设你的意思是'multipart / form-data'(由html表单生成)。为此,您可以使用名为“Express”的模块,请注意multer也可以处理文件上传。
以下是使用multer的示例:
// Import the express module
const app = require('express')();
function showForm(request, response) {
// Here you can generate the html form.
}
function processForm(request, response) {
// The form's text fields will be found in 'request.body'
}
app.get('/form', showForm);
// https://github.com/expressjs/multer
app.post('/form', upload.fields([]), processForm)
app.listen(80);
其他身体处理方法可在此处找到:multer
我不是很精通数据库,但是,这里有一个关于如何使用NodeJS连接到MySQL数据库的快速示例,这使用了“https://github.com/expressjs/body-parser”:
// Import the mysql module
var mysql = require('mysql');
// Connect to your database
var connection = mysql.createConnection({
host : 'localhost',
user : 'username',
password : 'sssshhhh',
database : 'myDatabase'
});
// Connect to the db
connection.connect();
// Query example
connection.query('SELECT * FROM users WHERE user_id = 1',
function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
}
);
// Close the connection
connection.end();
使用这三个拼图,我相信你可以找到解决问题的方法。