node.js - 我希望我的 SQL 结果返回普通文本而不是 SQL 格式
问题描述
所以当我运行我的应用程序时:node app.js user2
我得到一个我不想要的 SQL 格式响应。我的另一个问题是,当我尝试检查“user2”是否为管理员时,它会说它甚至在我的数据库中都不是。这是我想要的一个例子......
我希望它记录:
user2 is admin
Admins: user2
这是我不断得到的...
我不想记录:
user2 is not admin
Result {
command: 'SELECT',
rowCount: 1,
oid: null,
rows: [ { username: 'user2' } ],
fields:
[ Field {
name: 'username',
tableID: 16398,
columnID: 2,
dataTypeID: 25,
dataTypeSize: -1,
dataTypeModifier: -1,
format: 'text' } ],
_parsers: [ [Function: noParse] ],
_types:
TypeOverrides {
_types:
{ getTypeParser: [Function: getTypeParser],
setTypeParser: [Function: setTypeParser],
arrayParser: [Object],
builtins: [Object] },
text: {},
binary: {} },
RowCtor: null,
rowAsArray: false }
我的代码是...
const net = require('net');
const fs = require('fs');
const request = require('request');
const pg = require('pg');
const conString = 'postgres://user_1:test123@localhost:5432/websocks';
const client = new pg.Client(conString);
client.connect();
const username = client.query('SELECT username FROM websocks.users');
const userData = client.query('SELECT id, username, password, rank FROM websocks.users');
const isAdmin = client.query('SELECT username FROM websocks.users where rank = 1');
isAdmin.then(function(result) {
if (process.argv[2] === result) {
console.log(process.argv[2] + ' is admin!');
} else {
console.log(process.argv[2] + ' is not admin');
}
console.log("Admins: " + result);
});
解决方案
如果我理解你的第一个问题是关于如何从 client.query 检索数据。对于这个查询,例如const userData = client.query('SELECT id, username, password, rank FROM websocks.users');
postgres 将返回一个数组(由 PG 节点库转换为对象数组的结果集列表)。你已经有了结果。您必须以这种方式从结果中检索“行”属性:
userData.then(result => {
const usersDataArray = result.rows ;
usersDataArray.foreach (row => {
console.log (row.id);
console.log (row.username);
console.log (row.password);
});
});
你的第二个问题也一样。ClientQuery 返回一个包含查询实际结果的包装对象。
要检索实际结果,您必须访问此对象的行属性。这应该工作:
isAdmin.then(function(result) {
//i suppose that user with the rank 1 are admin so if the query return at least one result, that mean there is an admin in the database
if ( result.rows.length > 0 ) {
console.log(result.rows[0].username + ' is admin!');
} else {
console.log(process.argv[2] + ' is not admin');
}
console.log("Admins: " );
console.log( result.rows);
});
推荐阅读
- html - 将 div 元素彼此居中定位
- flutter - 即使缩进正确也无法加载
- javascript - 在按下按钮时在 React Native 中向 AsyncStorage 添加特定的 API 响应
- javascript - 在图像纹理背景上使用蒙版缩放视频纹理
- java - 每次单击时如何随机更改图形位置
- javascript - 难以实现 React-Infinite-Scroll-Component
- python - Scikit Learn Local Linear Embedding (LLE):重构错误
- python - PyTorch mat1 和 mat2 形状不能相乘
- grails - 没有收到通过 sendgrid 发送的邮件
- excel - FileNotFoundError:[Errno 2] 没有这样的文件或目录:'Assignment3_TestSystem.xlsx'