fatesses 2018-05-25 08:23 采纳率: 50%
浏览 780
已采纳

node.js 表单提交,显示(需要改成2个node.js)

大佬们好,我现在做了个表单页面,创建数据库并储存用户资料,然后读取并显示。功能都实现了,就一个js。
现在的问题是,如果要改成2个node.js program要怎么弄?
具体的要求是, 第一个node.js 创建sqlite3 数据库,里面有个TABLE用来存表单发送的数据。
第二个node.js启动服务器,接受到表单发送的数据并存到数据库,然后显示出来。

怎么修改才能以2个NODE.JS实现同样的效果,

下面则是我现在以一个index.js实现的code。

 var express = require('express')
var bodyParser = require("body-parser");

var app = express();
var sqlite3 = require('sqlite3').verbose();

// persistant file database "myDB".
var db = new sqlite3.Database('myDB');
//set up table
db.serialize(function (){
    db.run('CREATE TABLE IF NOT EXISTS users (name text, password text, option text);')
});

//now any files in public are routed
app.use(express.static('public'));

//Here we are configuring express to use body-parser as middle-ware.
app.use(bodyParser.urlencoded({ extended: false }));

// REST endpoint for posting a new user
app.post('/users', function (req, res, next) {

    let username = req.body.name;
    let password = req.body.password;

    let optradio = req.body.optradio;

    var stmt = db.run(
        `INSERT OR IGNORE INTO users VALUES ("${username}", "${password}", "${optradio}")`

    );
    res.status(200).redirect('/');  
    console.log("Just received POST data for users endpoint!");
    console.log(`Data includes: ${username}, ${password} and ${optradio}`);


});




// REST endpoint for getting all user data
app.get('/users', function (req, res) {

    // Display a web page table
    res.write('<html><body>');
    res.write("<h3> The User Information Table </h3>");
    res.write("<table><tr style='background-color:#006633'>");
    res.write('<th width="150" style="color:#ffff99">Name</th>');
    res.write('<th width="150" style="color:#ffff99">Password</th>');
    res.write('<th width="150" style="color:#ffff99">Option</th><tr>');

    // Retrieve data from table User on the server 
    // and display it in a web page table structure
    db.all('SELECT * FROM users', function(err, rows){
        rows.forEach(function (row){
            res.write('<tr style="background-color:#ccffcc">');
            res.write('<td width="150" align="center">'+row.name+'</td>');
            res.write('<td width="150" align="center">'+row.password+'</td>');
            res.write('<td width="150" align="center">'+row.option+'</td></tr>');
        });
        res.write('</table>');
        res.write('</body></html>');
        res.send();
    });
});

// create a Node.js server that listens on port 3000.
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
})

下面是html

 <!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Node Express</title>
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <h3> My First Express Server... </h3>
            <form action="/users" method="post">
                <div class="form-group">
                    <label for="usr">Name:</label>
                    <input type="text" class="form-control" name="name" id="usr">
                </div>
                <div class="form-group">
                    <label for="pwd">Password:</label>
                    <input type="password" class="form-control" name="password" id="pwd">
                </div>


                <label class="radio-inline"><input type="radio" name="optradio" value="1">Option 1</label>
                <label class="radio-inline"><input type="radio" name="optradio" value="2">Option 2</label>
                <label class="radio-inline"><input type="radio" name="optradio" value="3">Option 3</label>
                <br><br>

                <button type="submit" value="Create Profile" class="btn btn-primary">Submit</button>
            </form>
            <br>
            <form action="/users" method="get">
                <button type="submit" value="Get Users" class="btn btn-primary">Get Users</button>
            </form>
        </div>
    </body>
</html>

  • 写回答

3条回答 默认 最新

  • 默默悟问 2018-05-26 16:47
    关注

    是要分开为两个js文件吧?建立db.js如下:

     exports.initDB = function() {
        var sqlite3 = require('sqlite3').verbose();
    
        var db = new sqlite3.Database('myDB');
        //set up table
        db.serialize(function (){
            db.run('CREATE TABLE IF NOT EXISTS users (name text, password text, option text);')
        });
        return db;
    }
    

    index.js文件前几行改为:

      var express = require('express')
    var bodyParser = require("body-parser");
    
    var app = express();
    
    var dbModule = require('./db');
    var db = dbModule.initDB();
    
    //now any files in public are routed
    app.use(express.static('public'));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog