【发布时间】:2015-03-10 04:29:27
【问题描述】:
我有以下基于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 是自定义创建的变量。
问题是:
当我将data 对象发送给客户端时,__proto__ 属性也会添加到当我向客户端发送x 时没有发生的对象。
但是,我不想在客户端使用__proto__,因为从一些文章中,我发现__proto__ 存在安全问题。
我需要有关如何从 data 对象中删除 __proto__ 的帮助。
【问题讨论】:
-
您不能删除
__proto__,这是一个内部属性。 -
@BhojendraSah:
.__proto__不是内部属性,而是继承自Object.prototype -
安全问题?不,你一定是看错了。你能给我们指点那些文章吗?
-
res.json将不包括__proto__属性。您确定您在实际的 HTTP 响应中看到了它吗?
标签: javascript json node.js mongodb mongoose