postgresql - PostgresQL 不断将我连接到我的“管理员用户名”数据库
问题描述
令我沮丧的是,当我运行“npm run migrate:test”将我的表迁移到测试数据库时,Postgres 一直显示错误:“数据库不存在。即使我已将连接指定为“postgresql://dunder- mifflin@localhost/imagery-api-test"
更多代码:
before('make knex instance', () => {
db = knex({
client: 'pg',
connection: "postgresql://dunder-mifflin@localhost/imagery-api-test"
})
app.set('db', db)
})
不知道为什么它一直将我连接到一个不存在的数据库。我已经尝试了几个小时,但无法弄清楚。有什么想法吗?
解决方案
对于 knex,您需要添加过期时间,因为它会缓存您的连接信息并每次都重用它。
默认情况下,通过函数接收的配置对象会被缓存并重用于所有连接。要更改此行为,可以将 expireChecker 函数作为配置对象的一部分返回。在尝试创建新连接之前会咨询expirationChecker,如果它返回true,则会检索一个新的配置对象。例如,要使用具有有限生命周期的身份验证令牌:
var knex = require('knex')({
client: 'postgres',
connection: async () => {
const { token, tokenExpiration } = await someCallToGetTheToken();
return {
host : 'your_host',
user : 'your_database_user',
password : token,
database : 'myapp_test',
expirationChecker: () => {
return tokenExpiration <= Date.now();
}
};
}
});
更多信息:git repo
在这里:knex官方
推荐阅读
- ios - 如何在 Swift 5 中从 UITableView 单击按钮时获取索引路径
- python - 在适用于字符串集的 pydantic 模型中使用正则表达式
- python - 数字格式在 xlsxwriter 中无法正常工作
- excel - 检查 Excel 文件的文化以解析 .Net 中的十进制数字
- python - flask_sqlalchemy 与 Oracle
- mips - 尝试在 0x00400028 处执行非指令。Qtspim 中的错误代码
- python-3.x - 如何编辑我的代码以循环浏览页面?
- php - 如何使用不同的 ID 连接两个表但相关
- javascript - 仅将少量数据传递给 JSON.parse() 到 Elasticsearch
- laravel - Laravel 使用地图更改数组键进行采摘