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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵