Node.js 无法读取null的属性“query”?
这是我的nodejs文件,connectionString是连接heroku和postgreSQL的数据库信息 但当我运行这个时,我只得到 查询'SELECT*FROM employee,其中empid=$1',[1],函数err,结果{ ^ TypeError:无法读取null的属性“query”Node.js 无法读取null的属性“query”?,node.js,postgresql,heroku,Node.js,Postgresql,Heroku,这是我的nodejs文件,connectionString是连接heroku和postgreSQL的数据库信息 但当我运行这个时,我只得到 查询'SELECT*FROM employee,其中empid=$1',[1],函数err,结果{ ^ TypeError:无法读取null的属性“query” 如何解决此问题?在您的错误处理程序中: var express = require('express'); var pg = require('pg'); var app = express();
如何解决此问题?在您的错误处理程序中:
var express = require('express');
var pg = require('pg');
var app = express();
var connectionString = "postgres://...";
app.get('/', function (req, res, next) {
pg.connect(connectionString, function (err, client, done) {
if (err) {
console.log("not able to get connection " + err);
res.status(400).send(err);
}
client.query('SELECT * FROM employee WHERE empid=$1', [1], function (err, result) {
done(); // closing the connection;
if (err) {
console.log(err);
res.status(400).send(err);
}
res.status(200).send(result.rows);
});
});
});
app.listen(3000, function () {
console.log('Server is running.. on Port 3000');
});
您需要添加一个返回,以便在发送错误状态后,代码不会继续尝试执行client.query,因为如果出现错误,客户端中没有有效值。因此,请更改为:
if (err) {
console.log("not able to get connection " + err);
res.status(400).send(err);
}
client.query(...)
虽然它的影响较小,但在这里也是如此:
if (err) {
console.log("not able to get connection " + err);
res.status(400).send(err);
return;
}
client.query(...)
您需要添加报税表的地方:
if (err) {
console.log(err);
res.status(400).send(err);
}
res.status(200).send(result.rows);
这两种情况下的总体问题是,虽然res.status….send….将响应发送回客户端,但它不会阻止您的代码在此之后继续执行,因此您仍然需要使用if/else进行适当的流控制,或者使用适当的返回来控制代码的执行流,以便在发生错误后不会立即执行ute您不希望的代码的其他部分。这意味着客户端为空。您使用的是哪个postgres模块@김기훈 - 嗯,这是需要解决的问题-显然还有更多的问题。也许你没有正确地使用pg.connect函数。我不知道那个API,但我会查一下。你正在使用哪个确切的postgres模块?你能在NPM上提供到它的链接吗@김기훈 - 我看到的文档和两个文档显示的连接顺序与您显示的不同。一个构建池对象,另一个构建客户端对象,两者都不像您的代码。您确定您的连接方法正确吗@김기훈 - 你想好你的问题了吗?
if (err) {
console.log(err);
res.status(400).send(err);
return;
}
res.status(200).send(result.rows);