【问题标题】:Trying to retrieve Data from MongoDB using Typescript尝试使用 Typescript 从 MongoDB 检索数据
【发布时间】:2021-04-19 14:45:00
【问题描述】:

背景:我对 TypeScript 不太熟悉,因为我们不会在工作中使用它,我正在尝试构建一个小作品集以供个人曝光。

所以首先是我的代码:

import { request, Request, Response } from 'express';
import { Neighborhood as NeighborhoodType } from '../interfaces/neighborhood.interface';
import Neighborhood from '../models/neighborhood';

const fetchNeighborhoods = async (request: Request, response: Response): Promise<void> => {
  try {
    const neighborhoods: NeighborhoodType[] = await Neighborhood.paginate();
    response.status(200).send(neighborhoods);
  } catch (error) {
    throw error;
  }
};

我正在尝试从数据库中获取社区,并在此行 const neighborhoods: NeighborhoodType[] = await Neighborhood.paginate(); 上收到错误 Type 'PaginateResult&lt;Neighborhood&gt;' is missing the following properties from type 'Neighborhood[]': length, pop, push, concat, and 26 more.

如果我删除NeighborhoodType[],那么该方法将正常工作。邻域接口实际上是一个带有字符串的对象。

export interface Neighborhood extends Document {
  name: string,
}

是我的代码有问题还是其中一个依赖项有问题?

【问题讨论】:

    标签: node.js typescript mongoose


    【解决方案1】:

    对于遇到此问题的任何人:

    问题源于尝试设置返回类型。由于 Mongoose 将始终返回一个文档、文档数组或空数组(除非使用 onFail()),因此可以推断返回类型,因此无需添加 NeighborhoodType[]

    如果我没记错的话,PaginateResult 类型本质上是 Array 的类型,并且期望 Neighborhood 类型具有它不会拥有的所有数组方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-04
      • 2021-10-17
      • 2022-01-20
      • 2020-03-19
      • 2011-10-23
      • 2020-09-18
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多