【发布时间】:2013-08-01 13:45:59
【问题描述】:
我有一个像这样构建的猫鼬用户模式:
var UserSchema = new Schema({
username: { type: String, required: true, index: { unique: true } },
password: { type: String, required: true },
salt: { type: String, required: true}
});
我希望能够将此用户对象发送到我的应用程序的客户端,但我不想发送密码或盐字段。
所以我将以下代码添加到我的用户模型模块中
U
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 的某些功能),请随时接受教育我知道做这种事情的正确方法。
所以基本上我想知道什么是正确的方法,以及为什么我的方法不起作用。
谢谢
【问题讨论】:
标签: node.js mongoose underscore.js