node.js:将数据插入PostgreSQL数据库时,提交后HTML表单挂起

卷曲的恶霸

我最近设置了node.js使用,Express使用创建了一个简单的HTML表单Jade表单是将数据插入PostgreSQL数据库中。问题是,当我在表单上按Submit时,所有内容都插入到数据库中,但是HTML表单只是挂起/徘徊,在某些时候它以停止No data received, ERR_EMPTY_RESPONSE有时它还会两次插入数据。我猜这是因为服务器端没有返回响应,但是我看不到(我是新来的node.js)。

的表格已action="add_device"路由到routes/add_device.jsadd_device.js看起来像这样:

var express = require('express');
var router = express.Router();

router.get('/', function(request, response, next) {
    res.send('Nothing to see here. Move along.');
});

router.post('/', function(request, response, next) {
    var db      = require('../public/javascripts/db/insert');
    var result  = db.insertDevice(request, response);
    return result;
});

module.exports = router;

insertDevicedb模块中函数如下所示(通过导出module.exports):

// Insert new QA device. Data arriving as a request from a HTML form.
insertDevice: function (request, response) {

    // Input that is verified in the HTML form.
    // Convert to proper format for PostgreSQL query.
    var name        = '\'' + request.body.name          + '\'';
    var ip_address  = '\'' + request.body.ip_address    + '\'';
    var os          = '\'' + request.body.os            + '\'';

    // Input that needs to be verified. Prepare for PostgreSQL query.
    var mac_address;
    var os_version;
    request.body.mac_address == ""  ?   mac_address = 'NULL'    :   mac_address = '\'' + request.body.mac_address   + '\'';
    request.body.os_version == ""   ?   os_version  = 'NULL'    :   os_version  = '\'' + request.body.os_version    + '\'';

    var pg = require('pg');             // PostgreSQL module.
    var td = require('./table_data')    // Database constants.

    var client = new pg.Client(request.app.get('postgreConnection'));
    client.connect(function(err) {
        if (err) {
            return console.error('Could not connect to postgres', err);
        }

        var QUERY = "INSERT INTO " + td.QA_DEVICES.TABLE_NAME + "(" +
                    td.QA_DEVICES.COLUMN_NAME           + ", " +
                    td.QA_DEVICES.COLUMN_MAC_ADDRESS    + ", " +
                    td.QA_DEVICES.COLUMN_IP_ADDRESS     + ", " +
                    td.QA_DEVICES.COLUMN_OS             + ", " +
                    td.QA_DEVICES.COLUMN_OS_VERSION     + ") VALUES(" +
                    name        + ", " +
                    mac_address + ", " +
                    ip_address  + ", " +
                    os          + ", " +
                    os_version  + ");";

        client.query(QUERY, function (err, result) {
            if (err) {
                return console.error('Error running query: ' + QUERY, err);
            }

            console.log('Query performed: ' + QUERY);
            client.end();
        });
    });

}

“查询执行”总是记录到控制台,并插入到数据库中的数据,但形式仍然挂。我的问题是:

  1. 是服务器缺乏响应使表单挂起了吗?
  2. 如何将响应“发送回”前端?
  3. 插入数据库后是否可以将前端路由到另一个页面?最佳做法是什么?
以斯拉·莫尔斯
  1. 是的,您的请求未收到任何响应,因此已挂起。

  2. 为了发送响应,您可以在接收到请求时发送盲确认(不依赖于查询是否成功,这可能是不正确的做法),也可以在回调中发送。

client.query(QUERY, function (err, result) {
            if (err) {
                // response.json({status: 'error'});
                response.write('Error');
                return console.error('Error running query: ' + QUERY, err);
            } else {
  
                // You can send json here too
                // response.json({status: 'success'});
                response.write('Success');

            }

            console.log('Query performed: ' + QUERY);
            client.end();
        });

  1. 如果要转到另一个页面,只需在客户端解析传入的响应并进行重定向。使用json是执行此操作的好方法。您也可以在服务器端执行response.redirect(url),而不是发送回数据。玩得开心

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据插入SQL Server数据库时,Node.js中出现奇怪的错误

来自分类Dev

无法使用带有node.js的axios POST将json记录插入到postgresql数据库中?

来自分类Dev

Node.js + Express:将某些内容插入数据库后,如何更新页面?

来自分类Dev

尝试使用HTML和Node.js将登录表单输入发送到数据库

来自分类Dev

在node.js中测试后清理数据库

来自分类Dev

在node.js中测试后清理数据库

来自分类Dev

如何将PostgreSQL数据库与Node.js集成

来自分类Dev

仅当数据不存在时才将数据添加到数据库(Node js)

来自分类Dev

我在将 mysql 数据库(phpmyadmin)连接到 node.js 时收到错误

来自分类Dev

如何使用 Node.js 将 html 文档连接到 sql 数据库

来自分类Dev

带有TypeORM的Node.js将错误的时区插入到Azure SQL数据库中

来自分类Dev

Node + Express:将数据发布到数据库后不调用回调

来自分类Dev

尝试使用node-oracledb在Oracle数据库中将图像插入BLOB类型时出错

来自分类Dev

使用php和jquery ajax提交表单后无法将数据插入数据库

来自分类Dev

通过Node.js在数据库中更新时立即推送数据

来自分类Dev

如何使用MySQL数据库在Node.js中创建登录表单

来自分类Dev

插入到无法与Oracle数据库一起在Node.js上工作

来自分类Dev

使用 JavaScript 但不使用 Node.js 插入 MySQL 数据库

来自分类Dev

多选不将选定的选项插入node.js中的数据库

来自分类Dev

连接Postgresql数据库,node.js和react.js

来自分类Dev

Node js - 返回从数据库读取的数据数组的函数

来自分类Dev

当Node.js应用程序离线时,我应该将Firebase数据库设置为离线吗?

来自分类Dev

在将响应发送回Node.js之前从数据库解密数据

来自分类Dev

使用Node.js和Postgresql数据库实现Notification系统的最佳方法

来自分类Dev

Node.js-将数据发送到Node.js并以HTML格式验证插入的数据

来自分类Dev

从流导入到数据库后,node.js如何同步最终回调

来自分类Dev

node.js&在异步数据库搜索后表达,重定向或发送文件

来自分类Dev

Node.js和Mongoose:使用for循环检查数据是否存在以及是否插入数据库

来自分类Dev

通过Node JS App在OpenShift中连接到MySQL数据库时出错

Related 相关文章

  1. 1

    将数据插入SQL Server数据库时,Node.js中出现奇怪的错误

  2. 2

    无法使用带有node.js的axios POST将json记录插入到postgresql数据库中?

  3. 3

    Node.js + Express:将某些内容插入数据库后,如何更新页面?

  4. 4

    尝试使用HTML和Node.js将登录表单输入发送到数据库

  5. 5

    在node.js中测试后清理数据库

  6. 6

    在node.js中测试后清理数据库

  7. 7

    如何将PostgreSQL数据库与Node.js集成

  8. 8

    仅当数据不存在时才将数据添加到数据库(Node js)

  9. 9

    我在将 mysql 数据库(phpmyadmin)连接到 node.js 时收到错误

  10. 10

    如何使用 Node.js 将 html 文档连接到 sql 数据库

  11. 11

    带有TypeORM的Node.js将错误的时区插入到Azure SQL数据库中

  12. 12

    Node + Express:将数据发布到数据库后不调用回调

  13. 13

    尝试使用node-oracledb在Oracle数据库中将图像插入BLOB类型时出错

  14. 14

    使用php和jquery ajax提交表单后无法将数据插入数据库

  15. 15

    通过Node.js在数据库中更新时立即推送数据

  16. 16

    如何使用MySQL数据库在Node.js中创建登录表单

  17. 17

    插入到无法与Oracle数据库一起在Node.js上工作

  18. 18

    使用 JavaScript 但不使用 Node.js 插入 MySQL 数据库

  19. 19

    多选不将选定的选项插入node.js中的数据库

  20. 20

    连接Postgresql数据库,node.js和react.js

  21. 21

    Node js - 返回从数据库读取的数据数组的函数

  22. 22

    当Node.js应用程序离线时,我应该将Firebase数据库设置为离线吗?

  23. 23

    在将响应发送回Node.js之前从数据库解密数据

  24. 24

    使用Node.js和Postgresql数据库实现Notification系统的最佳方法

  25. 25

    Node.js-将数据发送到Node.js并以HTML格式验证插入的数据

  26. 26

    从流导入到数据库后,node.js如何同步最终回调

  27. 27

    node.js&在异步数据库搜索后表达,重定向或发送文件

  28. 28

    Node.js和Mongoose:使用for循环检查数据是否存在以及是否插入数据库

  29. 29

    通过Node JS App在OpenShift中连接到MySQL数据库时出错

热门标签

归档