![](/img/trans.png)
[英]How to get property name from ajv output to map validation errors to human friendly messages?
[英]Hide a property name from output
我有一个返回数据的函数。 该数据来自一个接口,带有一个属性名称。 输出具有属性名称。 如果可能的话,我想避免这种情况。
我该怎么做呢?
界面:
export interface DataNode {
id?: number,
type?: string,
parentId?: number,
data?: any,
children?: DataNode[],
buildings?: DataNode[],
areas?: DataNode[],
rooms?: DataNode[],
flags?: DataNode[],
details?: DataNode[]
};
创建输出的代码:
export const fromCity = async (
city: entities.City,
depth: "none" | "immediate" | "full"
): Promise<DataNode> => {
return {
id: city.id,
type: "City",
data: {
name: city.name,
title: city.title,
// created: city.created,
// updatedAt: city.updatedAt
},
buildings: depth !== "none" ?
await mapChildren((building: entities.Building): Promise<DataNode> => {
building.city = building.city || Promise.resolve(city);
return fromBuilding(
building,
depth === "immediate" ? "none" : depth
);
})(await (city.buildings || Promise.resolve([]))) : []
};
};
我从 API 获得的实际输出:
"id": 1,
"type": "Building",
"parentId": 1,
"data": {
"name": "data-center",
"title": "Data Center",
"subtitle": "Secure Data Center and Cloud NOC",
"x": "11.30",
"y": "41.50"
我想从 API 中得到什么:
"id": 1,
"type": "Building",
"parentId": 1,
{
"name": "data-center",
"title": "Data Center",
"subtitle": "Secure Data Center and Cloud NOC",
"x": "11.30",
"y": "41.50"
注意"data":
的消失"data":
。 这就是我想隐藏的。
有没有一种简单的方法可以告诉“不要返回这个属性名称,只返回它的值”?
对象的键必须是字符串。 因此,最接近所需输出的是将"data"
键命名为空字符串""
Javascript 不允许你这样做。 没有键就不能有一个值来访问它,否则数据将无法通过 OBJECT 访问。 你可以做什么使它输出一个数组:
[
{
"id": 1,
"type": "Building"
"parentId": 1
},
{
"name": "data-center",
"title": "Data Center",
"subtitle": "Secure Data Center and Cloud NOC",
"x": "11.30",
"y": "41.50",
}
]
然后你可以访问数据
JSON.parse(JSONresponse[1]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.