Typescript返回类型接口具有其他字段

时间:2019-08-29 07:20:33

标签: typescript loopback4

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

return admin.database().ref("/users/"+receiverid).once('value').then(snap => { // Your first promise
    [...]
    return admin.messaging().sendToDevice(token, payload);
    })
.then(function(response) { // Second promise
                            [...]
                         });

AND

// 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;
}

但是我希望得到一个与接口完全匹配的响应。 (如果减少或过滤更多,则会出错)。这是什么问题,如何使用接口实现?

ps:我知道我可以通过手动映射每个值来完成上述操作,但是这里的意图是使用[ { "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" }, { ... ]

我正在使用ubuntu(TypeScript)上的Loopback 4

1 个答案:

答案 0 :(得分:0)

仅与Interface s无关。它是编译时间信息。运行时没有接口。为了实现所需的功能,应该有一些物理值可用于映射。例如。道具名称数组。而且您必须自己执行此操作(或使用lodash之类的库)来仅过滤所需的道具。