这是一个在返回到客户端之前从JSON对象中删除敏感信息的函数。传递给函数的数据可以是JSON对象,也可以是JSON对象数组。为什么这个功能不起作用?
我知道这个问题有其他解决办法,但这让我大脑烦恼。
我已在此函数中记录了大量信息,即使JavaScript是异步的,函数也按它们应该的顺序运行 - 递归在最终返回语句被命中之前完成。
现在的问题是,即使一切似乎都在工作且delete
运算符正在返回true
,但当函数最终返回时,被删除的属性仍然存在。
从MongoDB获取的示例data
:
[
{
'id': '1',
'name': 'John',
'password': 'test123',
'emailAddress': 'john@example.com',
'emailAddressVerificationCode': 'A897D'
},
{
'id': '2',
'name': 'Andrew',
'password': 'test123',
'emailAddress': 'andrew@example.com',
'emailAddressVerificationCode': '90H8D'
},
{
'id': '3',
'name': 'Matthew',
'password': 'test123',
'emailAddress': 'matthew@example.com',
'emailAddressVerificationCode': '56C7C'
}
]
任何想法都会受到赞赏。
UserService.cleanJSON = (data) => {
if (Array.isArray(data)) {
for (let i = 0; i < data.length; i++){
data[i] = UserService.cleanJSON(data[i]);
}
} else {
if (data.password) delete data.password;
if (data.emailAddressVerficationCode) delete data.emailAddressVerficationCode;
if (data.mobileNumberVerificationCode) delete data.mobileNumberVerificationCode;
if (data.accountType) delete data.accountType;
}
return data;
};
答案 0 :(得分:1)
您可能正在使用Mongoose或任何其他ODM,对吧?
如果是这样,您必须知道除非您调用方法.lean()
(http://mongoosejs.com/docs/api.html#query_Query-lean),否则无法更改结果。
Mongoose保证模型不受任何修改,除非您分离结果。
答案 1 :(得分:-1)
删除JSON中最后一个花括号后面的逗号。