有两种方式,分手动和自动
1. 手动
修改返回 res 的数据,删除 user 中的私有数据
res.send({ user: user.getPublicProfile(), token });
userSchema.methods.getPublicProfile = function() {
const user = this;
const userObject = user.toObject();
delete userObject.password;
delete userObject.tokens;
return userObject;
};
2. 自动
修改 userSchema.methods.getPublicProfile 名字为 toJSON
userSchema.methods.toJSON
以下例子可以演示数据操作的过程
当使用 res.send() 的方法时候,自动调用 JSON.stringify() 方法
const pet = {
name: "Hal",
};
pet.toJSON = function() {
console.log(this);
return this;
};
console.log(JSON.stringify(pet));
如果修改了 object 的 toJSON 方法,在使用 JSON.stringify(object) 的时候,将会调用 toJSON 中的代码返回修改后的对象。该例子中将会返回 {}
const pet = {
name: "Hal",
};
pet.toJSON = function() {
return {}
};
console.log(JSON.stringify(pet));