【发布时间】:2020-11-14 09:11:58
【问题描述】:
我只是想写一个简单的注册/登录系统。 我正在尝试查找用户名是否存在。步骤如下:
- 转到 localhost:3000/users/register 页面
- 填写所有字段并点击注册按钮
- 检查我的命令行是否存在用户名,它应该使用 console.log 打印它
到目前为止一切正常。
当我返回注册页面时,我再次填写所有字段并单击注册按钮。然后它在命令行中抛出它:
Error: Client has already been connected. You cannot reuse a client.
at Client._connect (C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\node_modules\pg\lib\client.js:91:17)
at C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\node_modules\pg\lib\client.js:310:10
at new Promise (<anonymous>)
at Client.connect (C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\node_modules\pg\lib\client.js:309:10)
at Object.module.exports.findUserById (C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\database\register_sql.js:8:22)
at C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\routes\users.js:37:29
at Layer.handle [as handle_request] (C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\node_modules\express\lib\router\route.js:137:13)
at next (C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\node_modules\express\lib\router\route.js:131:14)
at Route.dispatch (C:\Users\Hasan\Desktop\Projeler\node-ogreniyorum\node_modules\express\lib\router\route.js:112:3)
我不明白,因为我在调用我的方法后已经结束了我的客户。
register_sql.js:
module.exports.findUserById =(async (username) =>{
try {
await client.connect();
console.log('Connected successfuly');
const result = await client.query("select * from users where username = ($1)", [username]);
console.log(result.rows[0]['username']);
await client.end();
console.log('Client disconnected...');
} catch (err) {
console.log(err);
}
});
我在 users.js 中调用 register_sql.js。 这里是 users.js:
const router = express.Router();
const registerSQL = require('../database/register_sql');
router.route('/register')
.get((req, res, next) => {
res.render('register');
})
.post((req, res, next) => {
const {
username,
password,
password2
} = req.body;
let errors = [];
if (!username || !password || !password2) {
errors.push("Please fill in all fields!");
}
if (password != password2) {
errors.push("Passwords do not match!");
}
if (password.length < 6) {
errors.push("Password has to be at least 6 characters!");
}
if (errors.length > 0) {
res.render('register', {
errors
});
} else {
registerSQL.findUserById(username);
res.redirect('/');
}
});
module.exports = router;
感谢您的帮助!
【问题讨论】:
-
你使用 ORM 吗?
-
你能在你启动服务器的地方分享你的代码吗? (可能您在启动服务器之前创建了一个客户端)
-
@diegoorellana 你好,首先我尝试了 Knex.js,但我不能,从那以后我尝试在没有 ORM 的情况下进行编写。我在 app.js 中启动我的服务器。你可以在这里看到:link
-
你能分享你实例化客户端的代码吗(const client = ...)
-
您也可以尝试删除 client.connect() 行,因为您之前创建了连接...
标签: javascript node.js postgresql express node-postgres