我有一个像这样构建的猫鼬用户模式:
var UserSchema = new Schema({
username: { type: String, required: true, index: { unique: true } },
password: { type: String, required: true },
salt: { type: String, required: true}
});
我希望能够将此用户对象发送到我的应用程序的客户端,但我不想发送密码或盐字段。
所以我将他下面的代码添加到我的用户模型模块中
ü
serSchema.methods.forClientSide = function() {
console.log('in UserSchema.methods.forClientSide');
console.log(this);
//var userForClientSide=_.omit(this,'passsword','salt');
var userForClientSide={_id:this._id, username:this.username };
console.log(userForClientSide);
return userForClientSide;
}
我有required
下划线模块(它通过我的 package.js 中的依赖项在本地安装)。
不是注释掉的行-我希望它省略用户对象的密码和盐字段,但它没有做任何事情:(记录的对象具有完整的属性集。
当替换为当前使用的一样var userForClientSide={_id:this._id, username:this.username };
时,它会得到我想要的结果,但是:
1)我想知道为什么不起作用_.omit
。2) 我不太喜欢我当前的解决方法,因为它实际上选择了一些属性而不是省略我不喜欢的属性,所以如果我要向 scema 添加任何新属性,我也必须在此处添加它们。
这是我第一次尝试使用 node.js/express/mongodb/mongoose 等编写东西。所以很可能我错过了一些其他更好的解决这个问题的方法(可能是 mongoose 的一些特性),请随时教育我做这样的事情的正确方法。
所以基本上我想知道什么是正确的方法,以及为什么我的方法不起作用。
谢谢