Я создал новую таблицу в Postgres, и у меня возникают проблемы с доступом к ней с помощью Sequelize. Я уже ПРЕДОСТАВИЛ все разрешения для таблицы теоретически, и я могу использовать ту же учетную запись для доступа к таблице через мою БД GUI.
Требуется ли какое-либо дополнительное разрешение для этой связи?
Executing (default): SELECT date_trunc('day', "created_at"), COUNT("id") AS "COUNT" FROM "notice_opened_tbl" AS "notice_opened_tbl" WHERE "notice_opened_tbl"."merchant_id" = 40 GROUP BY date_trunc('day', "created_at") ORDER BY date_trunc('day', "created_at") ASC;
(node:45) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: permission denied for relation notice_opened_tbl
РЕДАКТИРОВАТЬ: текущие разрешения - как вы можете видеть, они выглядят правильно. Пользователь, с которым я сейчас пытаюсь связаться, - это postgresadmin (будет изменен до производства)
![permissions](https://i.stack.imgur.com/SwPFo.png)
РЕДАКТИРОВАТЬ: Я не думаю, что это связано к разрешениям - я перепробовал практически все, что с ними связано, , и запрос работал, когда я подключался к базе данных с моей локальной машины, но не с dev . Проблема только в этой только что созданной таблице.
Кроме того, это на AWS, если это кому-нибудь помогает
Вот моя настройка dev - все запросы, НО запрос, включающий новую Таблица работает отсюда:
const sequelize = new Sequelize(
process.env.DATABASE_NAME || "DATABASENAMEHERE",
process.env.DATABASE_USERNAME || "postgresadmin",
process.env.DATABASE_PASSWORD || "PASSWORDHERE",
{
host: process.env.DATABASE_HOST || "postgres",
dialect: "postgres",
port: process.env.DATABASE_PORT || 5432,
pool: {
max: 10,
min: 0,
acquire: 30000,
idle: 10000,
},
define: {
timestamps: false,
},
});
Вот моя локальная установка, которая работает с моей локальной машины - запрос отсюда работает:
const sequelize = new Sequelize(
process.env.DATABASE_NAME || "DATABASEHERE",
process.env.DATABASE_USERNAME || "postgresadmin",
process.env.DATABASE_PASSWORD || "PASSWORDHERE",
{
host: process.env.DATABASE_HOST || "localhost",
dialect: "postgres",
port: process.env.DATABASE_PORT || 5465,
pool: {
max: 10,
min: 0,
acquire: 30000,
idle: 10000,
},
define: {
timestamps: false,
},
});
В dev, host - postgres поскольку это служба Kubernetes, связанная с подключением к базе данных
Вот код запроса (он еще не очищен):
let merchantId = parseInt(req.param("merchantId"), 10);
let noticeWhere = {
merchant_id: merchantId,
};
if (req.query.startdate && req.query.enddate) {
// @ts-ignore
noticeWhere.created_at = {
[Op.between]: [req.query.startdate, req.query.enddate]
};
}
let noticesOpened = NoticeOpened.aggregate(
"id",
"COUNT", {
plain: false,
where: noticeWhere,
group: [sequelize.fn("date_trunc", "day", sequelize.col("created_at"))],
order: [
[sequelize.fn("date_trunc", "day", sequelize.col("created_at")), "ASC"]
],
});
return noticesOpened;
Вывод YAML для службы postgres Kubernetes :
apiVersion: v1
kind: Service
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"creationTimestamp":"2019-07-21T02:44:44Z","name":"postgres","namespace":"default","resourceVersion":"169556","selfLink":"/api/v1/namespaces/default/services/postgres","uid":"7ef0a60f-ab61-11e9-8d66-06505b5dee68"},"spec":{"externalName":"URLHERE","ports":[{"port":5432,"protocol":"TCP","targetPort":5432}],"sessionAffinity":"None","type":"ExternalName"},"status":{"loadBalancer":{}}}
creationTimestamp: 2019-11-23T00:07:00Z
name: postgres
namespace: default
resourceVersion: "14358655"
selfLink: /api/v1/namespaces/default/services/postgres
uid: 2c1a58a4-0d85-11ea-a8cb-02dead532c7a
spec:
externalName: URLHERE
ports:
- port: 5432
protocol: TCP
targetPort: 5432
sessionAffinity: None
type: ExternalName
status:
loadBalancer: {}