我通过以下命令在postgresql中创建了一个用户:
function add_to_custom_table()
{
if ( is_single() )
{
$table_name = $wpdb->prefix . "my_plugin_table";
echo "<!-- ID: ". get_the_ID . ", TYPE: " . get_post_type($post->ID) . " -->";
$data = array( 'post' => get_the_ID(), 'type' => get_post_type(get_the_ID()) );
$format = array( '%d', '%s');
if( $wpdb->insert( $table_name, $data, $format ) )
{
echo "<!-- RESULT:: ADDED: ". $wpdb->insert_id . " -->";
}
}
}
但是它没有要求输入新密码,因此我认为该密码已设置为计算机的sudo密码。但是,当我尝试连接到数据库时,使用以下代码:
createuser --interactive
我收到此错误:
async function connect() {
let connection_string = "postgres://[username]:[password]@localhost:5432/[database]"
let client = new pg.Client(connection_string)
await client.connect()
let query = await client.query("select * from Messages;")
query.rows.forEach(row => {
console.log(row)
})
await client.end()
}
我该如何解决?
答案 0 :(得分:0)
我删除了用户,
(node:7106) UnhandledPromiseRejectionWarning: error: password authentication failed for user "[username]"
并重新创建用户,这次使用以下命令:
drop owned by [username];
drop user [username];
现在,它要求将新密码提供给该用户。然后相同的代码可以正常工作。
答案 1 :(得分:0)
async function connect() {
let connection_string = "postgres://[username]:[password]@localhost:5432/[database]"
let client = null;
try {
new pg.Client(connection_string)
} catch (e) {
console.log (e);
return;
}
try {
await client.connect()
} catch (e) {
return;
}
try {
let query = await client.query("select * from Messages;")
} catch(e) {
return ;
}
query.rows.forEach(row => {
console.log(row)
})
await client.end()
}
您可以使用try catch块来处理错误。 现在,为什么会出现错误,无论您提供的用户名/密码为何,都无法输入详细信息
答案 2 :(得分:0)
我不了解 Postgres DB ,但是我建议使用NodeJS时需要做一件事。 NodeJS提供了一个 unhandledRejection 钩子来全局处理每个承诺拒绝。您可以通过在主文件( server.js或app.js )中添加这样的代码安全性来使用它。
process.on('unhandledRejection', (reason, promise) => {
// call a function which will send a mail of this rejection
});
通过监视原因和承诺,您可以更好地理解。 希望对您有所帮助。快乐编码:)
答案 3 :(得分:0)
请尝试使用以下简单代码与PostgreSQL数据库连接。 创建一个具有凭据的新用户,例如用户名:Education和密码:password007。
var express = require('express'),
pg = require('pg'),
app = express();
//DB Connect String
var connect = "postgres://education:password007@localhost/recipebookdb";
app.get('/', function(req, res) {
//Pg Connect
// var pool = new pg.Pool()
// console.log(req.params.user_id);
pg.connect(connect, function(err, client, done) {
if(err) {
return console.error('error facing client from pool', err);
}
client.query('SELECT * FROM recipes', function (err, result) {
if(err) {
return console.error('error runnign query', err);
}
res.render('index', {recipes: result.rows});
done();
});
});
});
答案 4 :(得分:0)
您需要使用try catch处理错误,还需要记录unhandledRejection的原因。这是根据您的情况提供的示例
async function connect() {
try {
let connection_string = "postgres://[username]:[password]@localhost:5432/[database]"
let client = new pg.Client(connection_string)
await client.connect()
} catch (err) {
throw err;
}
try {
let query = await client.query("select * from Messages;");
query.rows.forEach(row => {
console.log(row)
})
await client.end()
} catch (err) {
throw err;
}
}
process.on('unhandledRejection', (reason, promise) => {
console.log('Unhandled Rejection at:', reason.stack || reason)
});