问题描述
请保持友好,我知道我是一个半新手。
我已成功连接到数据库。好极了。但是,尝试登录用户时,出现错误client is not defined
正如您在我的auth-access.js
中所看到的那样,我尝试定义客户端(目前已注释掉),但是随后我将收到错误Cannot read property 'query' of undefined
我知道我在这里遗漏了一些东西,但是我疯了,无法解决!非常感谢您的帮助。
这是我的代码。
pg-access.js
const { Pool } = require("pg");
const localConfig = {
database: process.env.PG_DATABASE,user: process.env.PG_USER,port: process.env.PG_PORT,password: process.env.PG_PASSWORD,};
const herokuAddonConfig = {
connectionString: process.env.DATABASE_URL,};
const pool = new Pool(
process.env.NODE_ENV === "production" ? herokuAddonConfig : localConfig
);
connectToDb = async () => {
// ASYNC CONNECT TO DB
try {
await pool.connect();
console.log("connected to chat_app database");
} catch (err) {
console.log("Not connected to DB" + err);
}
};
module.exports = { connectToDb };
auth-access.js
//const saltRounds = 10;
const pgAccess = require("./pg-access");
require("dotenv").config();
require("../routes/auth-routes");
require("pg");
//const { Client } = require("pg");
// let client = await pgAccess.connectToDb();
loginUser = async (name,password) => {
try {
await client.query("BEGIN");
const results = await client.query(
`SELECT * FROM users WHERE username = '${name}';`
);
const saltedPassword = results.rows[0].password;
const passwordMatch = await bcrypt.compare(password,saltedPassword);
if (results.rows[0].is_logged_in == true) {
return {
isSuccessful: false,errorMessage: "This user is already logged in",};
}
if (!passwordMatch) {
return {
isSuccessful: false,errorMessage: "Incorrect password",};
} else {
await client.query(
`UPDATE users SET last_active_at = Now() WHERE username = '${name}'`
);
await client.query(
`UPDATE users SET is_logged_in = true WHERE username = '${name}'`
);
await client.query("COMMIT");
}
let successfulLogin = {
isSuccessful: true,errorMessage: null,user: results.rows[0],};
return successfulLogin;
} catch (err) {
console.log(`User not logged in ${err}`);
return {
isSuccessful: false,errorMessage: "Could not locate this username. Please register.",};
}
};
logoutUser = async name => {
try {
await client.query("BEGIN");
const results = await client.query(
`SELECT * FROM users WHERE username = '${name}'`
);
await client.query(
`UPDATE users SET is_logged_in = false WHERE username = '${name}'`
);
await client.query("COMMIT");
return results.rows[0];
} catch (err) {
console.log(`Could not logout user ${err}`);
return false;
}
};
putlogoutUser = async id => {
try {
await client.query("BEGIN");
await client.query(`SELECT * FROM users WHERE id = '${id}'`);
await client.query(
`UPDATE users SET is_logged_in = false WHERE id = '${id}'`
);
await client.query("COMMIT");
} catch (err) {
console.log(`Could not logout user ${err}`);
return false;
}
};
module.exports = { loginUser,logoutUser,putlogoutUser };
并且只是踢球,这是它尝试与之交互的特定路线:
auth-routes.js
const express = require("express");
const router = express.Router();
const pgAccess = require("../database/pg-access");
const authAccess = require("../database/authAccess");
const socketService = require("../services/socket-service");
const io = socketService.getIo();
router.post("/login",async (req,res) => {
const loginName = req.body.userName;
const password = req.body.password;
let userMatch = await authAccess.loginUser(loginName,password);
if (!userMatch.isSuccessful) {
res.status(401).json({
message: userMatch.errorMessage,});
} else {
userMatch = userMatch.user;
res.status(201).send({ userMatch });
}
io.emit("user_online",JSON.stringify(userMatch));
});
router.post("/logout",res) => {
const id = req.body.id;
let logoutName = req.body.userName;
const userMatch = await authAccess.logoutUser(logoutName);
if (!userMatch) {
res.status(401).json({
message: "there was an issue logging out",});
} else {
res.status(201).send({ userMatch });
}
io.emit("user_disconnect",JSON.stringify(id));
});
router.put("/logout/:id",res) => {
const id = req.params.id;
await authAccess.putlogoutUser(id);
io.emit("user_disconnect",JSON.stringify(id));
});
module.exports = router;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)