[英]Node js remove sensitive data from object before sending it
我想在发送到客户端之前从数组中删除一些敏感数据(以呈现所有用户),但由于某种原因我实际上无法删除它们! 我需要删除一些用户名、密码、电子邮件等。 splice() 有什么内容吗? 感谢你们对我的帮助!
app.get('/users', function(req, res){ Users.find{}, function(err, usersArray){
for(var a = 0; a < usersArray.length; a++){
usersArray[a].userData.username.splice(0, 1); // here's my error
usersArray[a].userData.email.splice(0, 1); // end here
usersArray[a].userData.password.splice(0, 1); // and also here
...
}
res.render('users.ejs', {
// and the variables go here...
})
}
顺便说一下,我得到的错误是“TypeError: undefined is not a function”。 再次感谢!
我会胡乱猜测您想完全删除username
、 email
和password
。 如果是这样,您正在寻找delete
,它从对象中删除属性:
app.get('/users', function(req, res){ Users.find{}, function(err, usersArray){
for(var a = 0; a < usersArray.length; a++){
var userData = usersArray[a].userData;
delete userData.username;
delete userData.email;
delete userData.password;
...
}
res.render('users.ejs', {
// and the variables go here...
})
}
如果这些属性是non-configurable ,则delete
无法删除它们,您必须将它们的值设置为undefined
:
app.get('/users', function(req, res){ Users.find{}, function(err, usersArray){
for(var a = 0; a < usersArray.length; a++){
var userData = usersArray[a].userData;
userData.username = undefined;
userData.email = undefined;
userData.password = undefined;
...
}
res.render('users.ejs', {
// and the variables go here...
})
}
如果它们既不可配置又不可写,则您必须创建替换对象。
使用delete
实时示例:
var usersArray = [{ userData: { name: "User 1", // Something to have left after we remove the others username: "user1", email: "user1@example.com", password: "pa$$word" } }, { userData: { name: "User 2", username: "user2", email: "user2@example.com", password: "pa$$word" } }, { userData: { name: "User 3", username: "user3", email: "user3@example.com", password: "pa$$word" } }]; snippet.log("Before: " + JSON.stringify(usersArray, null, 2)); for (var a = 0; a < usersArray.length; a++) { var userData = usersArray[a].userData; delete userData.username; delete userData.email; delete userData.password; } snippet.log("After: " + JSON.stringify(usersArray, null, 2));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
使用undefined
具有不可配置属性的实时示例:
function makeUserData(name, username, email, password) { var ud = {name: name}; Object.defineProperty(ud, "username", { enumerable: true, configurable: false, writable: true, value: username }); Object.defineProperty(ud, "email", { enumerable: true, configurable: false, writable: true, value: email }); Object.defineProperty(ud, "password", { enumerable: true, configurable: false, writable: true, value: password }); return ud; } var usersArray = [{ userData: makeUserData("User 1", "user1", "user1@example.com", "pa$$word") },{ userData: makeUserData("User 2", "user2", "user2@example.com", "pa$$word") },{ userData: makeUserData("User 3", "user3", "user3@example.com", "pa$$word") }]; snippet.log("Before: " + JSON.stringify(usersArray, null, 2)); for (var a = 0; a < usersArray.length; a++) { var userData = usersArray[a].userData; delete userData.username; delete userData.email; delete userData.password; } snippet.log("After delete: " + JSON.stringify(usersArray, null, 2)); for (var a = 0; a < usersArray.length; a++) { var userData = usersArray[a].userData; userData.username = undefined; userData.email = undefined; userData.password = undefined; } snippet.log("After assigning undefined: " + JSON.stringify(usersArray, null, 2));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.