我具有基于Node-Express的以下功能:
//function on server side
app.get('/loginCheck', loggedCheck, function(req, res) {
var data = {local: {}, facebook: {}};
data.id = req.user._id;
data.local.email = req.user.local.email;
data.local.fname = req.user.local.fname;
data.local.lname = req.user.local.lname ;
data.local.college = req.user.local.college ;
data.local.degree = req.user.local.degree ;
data.year = req.user.year ;
data.mobile = req.user.mobile ;
data.city = req.user.city ;
data.facebook.id = req.user.facebook.id ;
//res.json(data);
var x = {};
x.name = "someName"
res.json(x);
})
以下是发出ajax请求的客户端代码:
//function on client side making an ajax request
$.get("/loginCheck",function(data,status){
console.log(data);
});
在服务器端的先前代码中,req.user是由mongoose创建的mongodb对象.我想做的是发送数据对象(具有req.user对象的某些选定属性),然后将该对象作为JSON发送作为响应.
变量x是自定义创建的变量.
问题是:
当我将数据对象发送给客户端时,__ proto__属性也被添加了该对象,当我向客户端发送x时却没有发生.
但是,我不希望客户端使用__proto__,因为从某些文章中我发现__proto__存在安全问题.
我需要有关如何从数据对象中删除__proto__的帮助.
解决方法:
您不需要删除它.它不会造成任何麻烦/问题.
您可以这样使用.
$.each(data, function(k, v) {
console.log(k, v);
});