node.js 操作postgresql数据库(2)
来源:互联网 发布:淘宝改评价链接在哪里 编辑:程序博客网 时间:2024/05/21 19:38
1)将查询的结果返还给客户端
2)访问数据库的正常退出
3)返回值的问题
1)将查询的结果返还给客户端:
一般的查询都需要将结果展示出来,否则查询将显得没有意义。在node.js操作postgresql数据库中,如何将查询的数据返回回来呢?
(1) select.js
function select(client,selectSQLString,callback){ client.query(selectSQLString, function selectCb(error, results) { console.log("in select callback function\n"); if (error) { console.log('GetData Error: ' + error.message), client.end(); return; } //在执行完查询以后,结果集被存放在results中,你可以使用console.log(results)打印出来看看 if(results.rowCount > 0) { callback(results); } });}exports.select = select;
(2) client.js
var select = require('./select');var pg = require('pg');var conString = "tcp://postgres:postgres@localhost/my";var client = new pg.Client(conString);selectSQLString = 'select * from teacher';client.connect(function(error, results) { if(error){ console.log('ClientConnectionReady Error: ' + error.message); client.end(); return; } console.log('connection success...\n'); select.select(client,selectSQLString,function(result){ console.log(result); });});
//采用回调函数的形式来获取select.js文件中的查询结果
执行结果为:
connection success...
in select callback function
{ command: 'SELECT',
rowCount: 4,
oid: NaN,
rows:
[ { id: '1', name: 'aaa', pwd: '111' },
{ id: '2', name: 'bbb', pwd: '222' },
{ id: '3', name: 'ccc', pwd: '333' },
{ id: '4', name: 'ddd', pwd: '444' } ] }
2) 访问数据库的正常退出:
由于node.js的特性,若直接在调用select函数之后就关闭连接,结果可能就和我們预想的不一样了:
select.js不变,client.js 如下:
var select = require('./select');var pg = require('pg');var conString = "tcp://postgres:postgres@localhost/my";var client = new pg.Client(conString);selectSQLString = 'select * from teacher';client.connect(function(error, results) { if(error){ console.log('ClientConnectionReady Error: ' + error.message); client.end(); return; } console.log('connection success...\n'); select.select(client,selectSQLString,function(result){ console.log(result); }); client.end(); console.log('Connection closed.\n');});
运行结果:
connection success...
Connection closed.
可以看出,并没有将查询的结果返回回来,连接就关闭了。这是因为node.js执行到查询的时候,采用非阻塞的方式,直接跳过执行后面的语句,当查询执行完毕和调用相应的回调函数。
正确的处理方式为:client.js:
var select = require('./select');var pg = require('pg');var conString = "tcp://postgres:postgres@localhost/my";var client = new pg.Client(conString);selectSQLString = 'select * from teacher';client.connect(function(error, results) { if(error){ console.log('ClientConnectionReady Error: ' + error.message); client.end(); return; } console.log('connection success...\n'); select.select(client,selectSQLString,function(result){ console.log(result); client.end(); console.log('Connection closed.\n'); });});
运行结果: connection success...
in select callback function
{ command: 'SELECT',
rowCount: 4,
oid: NaN,
rows:
[ { id: '1', name: 'aaa', pwd: '111' },
{ id: '2', name: 'bbb', pwd: '222' },
{ id: '3', name: 'ccc', pwd: '333' },
{ id: '4', name: 'ddd', pwd: '444' } ] }
Connection closed.
3) 返回值的问题:大多数情况下,函数都有返回值
select.js
function select(client,selectSQLString,callback){ var content = 'select beginning\n'; client.query(selectSQLString, function selectCb(error, results) { console.log("in select callback function"); if (error) { console.log('GetData Error: ' + error.message), client.end(); return; } if(results.rowCount > 0) { callback(results); } }); content += 'select end!\n'; return content;}exports.select = select;
client.js
var select = require('./select');var pg = require('pg');var conString = "tcp://postgres:postgres@localhost/my";var client = new pg.Client(conString);selectSQLString = 'select * from teacher';client.connect(function(error, results) { if(error){ console.log('ClientConnectionReady Error: ' + error.message); client.end(); return; } console.log('connection success...\n'); var content = select.select(client,selectSQLString,function(result){ console.log(result); client.end(); console.log('Connection closed.\n'); }); console.log(content);});
运行结果:
connection success...
select beginning
select end!
in select callback function
{ command: 'SELECT',
rowCount: 4,
oid: NaN,
rows:
[ { id: '1', name: 'aaa', pwd: '111' },
{ id: '2', name: 'bbb', pwd: '222' },
{ id: '3', name: 'ccc', pwd: '333' },
{ id: '4', name: 'ddd', pwd: '444' } ] }
Connection closed.
- node.js 操作postgresql数据库(2)
- node.js 操作 postgresql 数据库
- node.js访问postgresql 数据库
- Node.js 连接 postgreSQL数据库
- Node.js 连接 postgreSQL数据库 (使用连接池pool)
- Node.js操作mongodb数据库
- node.js操作MySQL数据库
- Node.js操作mongodb数据库
- Node.js操作mongodb数据库
- node.js 操作MongoDB数据库
- Node.js 数据库 简单操作
- node.js操作MySQL数据库
- Node.js中连接PostgreSql数据库的方法
- Node.js笔记(四)mysql数据库操作
- Node.js的mysql数据库操作
- 用Node.js操作Firebird数据库。
- Node.js的mysql数据库操作
- .net 操作PostGreSql数据库
- 以HttpGet方法获取URL数据并转换成指定编码格式的字符串
- 命令模式(Command Pattern)
- FlashBulider开发中的ASDOC的使用。
- JAVA链接sql server数据库的步骤(包括tomcat下配置数据源)
- unity项目优化--绘制调用批处理unity3d Draw Call Batching
- node.js 操作postgresql数据库(2)
- python中的除法 转自iteye
- 微软面试题 经典测试(第三组)
- java poi excel
- redhat enterprise5.5手动安装gcc
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- unity项目优化-- 常规性能优化技巧
- 小兔的棋盘 hdu2067 递推
- Asp.net 验证控件