#node.js #knex.js #postgresql-11
#node.js #knex.js #postgresql-11
Вопрос:
Я могу установить соединение между «knex-pracice» (моей базой данных postgreql) с KNEX, но когда я пытаюсь выполнить запрос с моим экземпляром knex, я получаю сообщение об ошибке: «Ошибка необработанного соединения: роль «19016» не существует». 19016 — это имя моей учетной записи системного пользователя WINDOWS 10. и я пытаюсь понять, почему он использует «19016» вместо указанного пользователя «dunder-mifflin». Я новичок как в postgres, так и в knex, поэтому простите меня, если мое описание немного сбивает с толку или если кажется, что я полностью не понимаю свою проблему.
Кроме того, я попытался «взломать» свою проблему, создав пользователя с именем «19016» в базе данных и попытался подключиться таким образом, но это просто выдает мне другую ошибку: «Ошибка необработанного подключения: база данных «19016» не существует». Полностью запутавшись в том, как заставить его подключиться к postgresql с именем пользователя «dunder-mifflin», я, однако, могу подключиться к БД и запросить ее через мой powershell без проблем….
.env
NODE_ENV=development
PORT=8000
DB_URL="postgresql://dunder-mifflin@localhost/knex-practice"
practice.js
//adds .env file for environment variable access
require('dotenv').config()
const knex = require('knex')
// database connection --> this connction comes from the .env file
const knexInstance = knex({
client: 'pg',
// database connection established --> environment variable comes from .env
// file
connection: process.env.DB_URL
})
console.log('connection successful');
// SQL query
knexInstance
.from('amazong_products')
.select('*')
.then(result => {
console.log(result)
});
package.json
{
"name": "knex-practice",
"version": "1.0.0",
"description": "knex-practice",
"main": "index.js",
"scripts": {
"test": "mocha --require test/setup.js",
"dev": "nodemon src/server.js",
"start": "node src/practice.js",
"predeploy": "npm audit",
"deploy": "git push heroku master"
},
"repository": {
"type": "git",
"url": "git https://github.com/quonn-bernard/Express-Boilerplate.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/quonn-bernard/Express-Boilerplate/issues"
},
"homepage": "https://github.com/quonn-bernard/Express-Boilerplate#readme",
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^7.0.0",
"express": "^4.16.4",
"helmet": "^3.16.0",
"knex": "^0.16.5",
"morgan": "^1.9.1",
"pg": "^7.9.0"
},
"devDependencies": {
"chai": "^4.2.0",
"mocha": "^6.0.2",
"nodemon": "^1.18.10",
"supertest": "^4.0.2"
}
}
Ответ №1:
Вам необходимо изменить строку подключения на:
postgres://user:pass@localhost:5432/dbname