繁体   English   中英

错误:无法获取订单:TypeError:无法读取未定义的属性(读取“连接”)

[英]Error: Cannot get orders: TypeError: Cannot read properties of undefined (reading 'connect')

我正在尝试使用 express 和 pg 构建 API。 每当我尝试访问与数据库查询相关的端点时,都会出现上述错误。

我的处理函数如下:

import { Request, Response, Router, NextFunction } from 'express';
import { Orders } from '../models/order';

const orders = new Orders;

const index = async (_req: Request, res: Response, next: NextFunction) => {
try {
    const ordersList = await orders.index();
    res.json(ordersList);
} catch (err) {
    next(err)
  }
}

const ordersRoute = Router();

ordersRoute.get('/', index);

此处理程序引用以下模型:

import { Pool } from 'pg';

client = new Pool({
 host: POSTGRES_HOST,
 database: POSTGRES_DB,
 user: POSTGRES_USER,
 password: POSTGRES_PASSWORD,
 port: parseInt(POSTGRES_PORT as string, 10)

export class Orders {
 async index(): Promise<Order[]> {
  try {
   const conn = await client.connect();
   const sql = 'SELECT * FROM orders';
   const result = await conn.query(sql);
   conn.release();
   return result.rows;
  } catch (err) {
   throw new Error(`Cannot get orders: ${err}`);
   }
 }
}

任何时候我尝试访问我得到的端点

错误:无法获取订单:TypeError:无法读取未定义的属性(读取“连接”)

在控制台中。 知道如何解决吗?

那么在你的情况下事情是如何运作的。

nodejs从你的索引开始,从上到下一一读取所有模块。
在您的脚本中,您声明client ,然后导出一个class 在这种情况下,您的client已设置,然后您导出一个类,该文件已完成,这意味着唯一剩下的就是exported的东西。 因此,当您尝试使用exported的类时,您将不会拥有与模块中相同的上下文。

您还需要导出client并将其导入您需要该类的位置或在类中包含client定义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM