节点postgres“未定义客户端”,并且无法读取未定义错误的属性“查询”

问题描述

请保持友好,我知道我是一个半新手。

我已成功连接到数据库。好极了。但是,尝试登录用户时,出现错误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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...