0

我想从数据库中获取数据并按照接口中的定义返回(即只有值匹配接口)。我写了以下代码

// get data from databae - db.find() 
async getCustomerList(): Promise<CustomerInfoInterface[]> {
  const customerList = await db.find();
  return customerList;
}

export interface CustomerInfoInterface {
  firstName: string;
  lastName: string;
  phone: string;
  address?: string;
  birthDate?: Date;
  data?: object;
}

当我调用我得到的函数时

[
    {
        "customerId": "5d63b80ce186984f50617c95",
        "phone": "+9475588752",
        "firstName": "Jhon",
        "lastName": "Doe",
        "address": "No. 1, Some Rd, Somewhere",
        "birthDate": "1990-01-01",
        "data": {},
        "secret1": "a-efw53.0",
        "secret2": "b-45300"
    },
    {
        ...
]

但我希望得到与界面完全匹配的响应。(如果更少或过滤更多,则错误)。这里有什么问题,它是如何使用接口实现的?

ps:我知道我可以通过手动映射每个值来完成上述操作,但这里的意图是使用Interfaces.

我正在 ubuntu (TypeScript) 上开发 Loopback 4

4

1 回答 1

0

Interface仅与 s无关。它是编译时间信息。运行时没有接口。为了实现您想要的,应该有可用于映射的物理值。例如道具名称数组。你必须自己做这个(或使用像 lodash 这样的库)来过滤只需要的道具。

于 2019-08-29T11:23:20.340 回答