Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用Node.js net.Socket与Postgresql数据库通信就像使用终端一样大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
postgresql终端中,我可以输入命令并获得响应.例如:

#create database new database;

创建数据库

上面我在终端输入命令“create database newdatabase;”数据库程序响应“CREATE DATABASE”

我试图做同样的事情,但使用节点net.socket.换句话说,我想向我在localhost:5432上运行的POSTGResql服务器发出命令,并通过套接字获得响应.

我的程序成功建立了与POSTGResql服务器的连接并成功将数据刷新到内核,但我从未得到响应(数据监听器永远不会被触发).新数据库也不会被创建.

我还快速了解了wireshark上发生的事情.看起来套接字得到了设置.我看到我的数据以明文形式发送. POSTGResql服务器然后发送ACK FIN ACK.我确认FIN ACK,然后POSTGResql服务器最后一次确认.所以我知道POSTGResql服务器不会发回任何数据.

我的问题是,为什么POSTGResql服务器会忽略我发送它的命令以及为什么POSTGResql服务器不会向我发回任何数据,即使该数据只是一个错误.

const net = require('net');
const BlueBird = require('bluebird');

BlueBird.coroutIne(function* () {

var host = "127.0.0.1";
var port = "5432";
var idle_timeout = 10000;

var MySocket = new net.socket();
MySocket.setTimeout(idle_timeout);

var data = yield new Promise(

    function resolver(resolve,reject) {

        MySocket.on('connect',function () {
            var flushed = MySocket.write("create database newdatabase;","utf8");
            console.log("Data flushed to kernel: " + flushed);
        });

        MySocket.on('data',function (data) {
            console.log(data);
            resolve(data);
        });

        MySocket.on('error',function (error) {
            reject(error);
        });

        MySocket.connect(port,host);

    }

    );

    return data;

})()
.then(function (data) {

    console.log(data);

    return data;

})
.catch(function (error) {

    console.error(error);

})

解决方法

psql一个(REPL)命令行工具,它接受在一行或多行上输入的命令,并对其进行解析,并将其发送到数据库.

POSTGResql并没有通过端口5432上的套接字谈论相同的基于文本的协议.您可以在documentation中阅读有关POSTGResql协议的更多信息.

使用pg模块连接到带节点的POSTGRes,并在那里进行查询

var pg = require('pg');
var conString = "POSTGRes://username:password@localhost/database";

pg.connect(conString,function(err,client,donE) {
  if(err) {
    return console.error('error fetching client from pool',err);
  }
  client.query('create database newdatabase',result) {
    console.log('CREATE DATABASE');
  });
}

大佬总结

以上是大佬教程为你收集整理的如何使用Node.js net.Socket与Postgresql数据库通信就像使用终端一样全部内容,希望文章能够帮你解决如何使用Node.js net.Socket与Postgresql数据库通信就像使用终端一样所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。