我正在使用节点v8.11,无法从对象中删除一个项目,该对象会从mongoDB创建并返回新对象。
创建后的示例响应:
{
"name": "",
"device": "",
"session":"",
"_id": "5b7e78c3cc7bca3867bbd1c9",
"createdAt": "2018-08-23T09:05:07.134Z",
"updatedAt": "2018-08-23T09:05:07.134Z",
"__v": 0
}
尝试从如下所示的响应中删除“ _id”:
tokens.create(req.body).then(function(session){
delete session._id;
return res.send(session); // _id still exist
});
我已经看到在ES6中不建议使用删除功能,这是这种情况吗? 如何使用密钥在一行中删除项目?
答案 0 :(得分:2)
使用猫鼬模型创建对象时,它将返回一个模型对象,而不是普通的javascript对象。因此,当您执行delete session._id;
时,它将不起作用,因为session
是模型对象,并且不允许直接更改模型对象的属性。
您需要使用模型对象的toJSON()
或toObject()
方法将模型对象更改为普通JS对象,并删除其上的属性:
tokens.create(req.body).then(function(session) {
var sessionObj = session.toJSON();
delete sessionObj._id;
return res.send(sessionObj);
});
答案 1 :(得分:0)
使用destructuring
和rest
:
var res = {
"name": "",
"device": "",
"session":"",
"_id": "5b7e78c3cc7bca3867bbd1c9",
"createdAt": "2018-08-23T09:05:07.134Z",
"updatedAt": "2018-08-23T09:05:07.134Z",
"__v": 0
};
var { _id, ...ret } = res ;
console.log(ret);