Javascript Node js在发送之前从对象中删除敏感数据

Javascript Node js在发送之前从对象中删除敏感数据,javascript,node.js,javascript-objects,array-splice,Javascript,Node.js,Javascript Objects,Array Splice,我想在发送到客户端之前从阵列中删除一些敏感数据(以呈现所有用户),但由于某些原因,我实际上无法删除它们!我需要删除一些用户名、密码、电子邮件等。splice()是否有问题?谢谢你帮助我 app.get('/users', function(req, res){ Users.find{}, function(err, usersArray){ for(var a = 0; a < usersArray.length; a++){ usersArray[a].userData.us

我想在发送到客户端之前从阵列中删除一些敏感数据(以呈现所有用户),但由于某些原因,我实际上无法删除它们!我需要删除一些用户名、密码、电子邮件等。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...
  })

}
app.get('/users',function(req,res){users.find{},function(err,usersArray){
对于(var a=0;a

顺便说一句,我得到的错误是“TypeError: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;
    delete userData.username;
    delete userData.email;
    delete userData.password;
    ...
  }
  res.render('users.ejs', {
    // and the variables go here...
  })
}
如果它们既不可配置又不可写,则必须创建替换对象

使用
删除
的实时示例:

var usersArray=[{
用户数据:{
名称:“用户1”,//删除其他内容后剩下的内容
用户名:“user1”,
电子邮件:“user1@example.com",
密码:“pa$$word”
}
}, {
用户数据:{
名称:“用户2”,
用户名:“user2”,
电子邮件:“user2@example.com",
密码:“pa$$word”
}
}, {
用户数据:{
名称:“用户3”,
用户名:“user3”,
电子邮件:“user3@example.com",
密码:“pa$$word”
}
}];
log(“Before::+JSON.stringify(usersArray,null,2));
对于(var a=0;a


字符串没有
拼接
方法,请参阅@LeartS我假定
用户名
等。对象是用户名等的数组,而不是字符串。(无论如何,切掉字符串的第一个字符来检查某些内容是没有意义的。)如果您不告诉我们
usersArray
中的条目结构是什么,我们该如何帮助您?@doorknow冰 我想你想错了,这个错误表明他试图在一个没有
splice
方法的对象上使用
splice
。数组是
usersArray
,他通过索引它来获得单用户对象。@LeartS啊,你是对的;我没有看到问题的最后一行。当我有这样的代码时,它似乎是运行时没有错误,但仍然无法运行!我还控制台了.log()数组,其中仍然包含所有敏感数据。只是为了澄清,userData是一个数组,其余的(用户名、电子邮件、密码等)只是我必须删除的字符串。@JimTheGreek:不知道该告诉你什么,如果这些对象上存在这些属性并且它们不可配置,
delete
将删除它们。如果它们不可配置,你可以将它们设置为
undefined
@JimTheGreek:如果它们不可写,你必须创建一个全新的对象cts具有您想要的属性。
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...
  })
}