Javascript NodeJS+;Mongodb-隐藏属性

Javascript NodeJS+;Mongodb-隐藏属性,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在尝试从mongodb数据库检索用户对象: router.get('/',async(req,res)=>{ var user=await user.findOne({u id:'5fe30ba2d8f18b353ce6c7c2'})。选择('+password+token'); //没关系,我可以显示我的密码 console.log(用户密码); //我没有密码 console.log(用户); 资源状态(200)。发送(用户); }); 这是我的模型: const user=new m

我正在尝试从mongodb数据库检索用户对象:

router.get('/',async(req,res)=>{
var user=await user.findOne({u id:'5fe30ba2d8f18b353ce6c7c2'})。选择('+password+token');
//没关系,我可以显示我的密码
console.log(用户密码);
//我没有密码
console.log(用户);
资源状态(200)。发送(用户);
});
这是我的模型:

const user=new mongoose.Schema({
用户名:{
类型:字符串,
要求:正确,
特里姆:没错,
独一无二:真的
},
电邮:{
类型:字符串,
特里姆:没错,
要求:正确,
验证:电子邮件,
独一无二:真的
},
密码:{
类型:字符串,
要求:正确,
民:6,,
选择:false
},
名字:String,
姓氏:String,
出生日期:日期,
描述:字符串,
城市:字符串,
电话:{
类型:字符串,
},
社会的:社会的,
时间消耗:{
类型:字符串,
枚举:[
“用户。花费的时间。非常少”,
'用户.花费的时间.很少',
'USER.TIME\u-TO\u-SPEND.PARTIAL',
“用户。花费的时间。四分之三”,
'用户。花费的时间。已满'
]
},
I可用:{
类型:布尔型,
默认值:false
},
仅限ISProfitable:{
类型:布尔型,
默认值:false
},
主题:{
类型:数字,
默认值:0
},
伊萨明:{
类型:布尔型,
默认值:false
},
断开连接:{
类型:布尔型,
默认值:false
},
我确认:{
类型:布尔型,
默认值:false
},
代币:{
类型:字符串,
要求:正确,
选择:false
},
技能:[
{
名称:String,
评级:{
类型:数字,
民:1,,
最多:5
}
}
]
}, {
时间戳:对,
versionKey:false
});
“token”字段未隐藏,但“password”字段仅在检索用户对象时隐藏

我试图修改架构上的密码字段,我试图删除'select:false'属性,但它也不起作用

我试图这样修改我的用户对象:
JSON.stringify(user)
,但它也不起作用

你能帮我吗

谢谢大家!

试试这个

const user = await User.findById('5fe30ba2d8f18b353ce6c7c2').select('password token');
res.status(200).send({...user._doc})

您是否尝试在没有指示
select:false
的情况下重新创建架构?是的,我尝试过,它不起作用。我无法重现您的案例。我采用了您的模式,使用
constuser=mongoose.model(“user”,userScheme)创建了一个用户<或代码>然后使用您的代码与代码>控制台。log < /代码> -我得到了一个密码,并且对象有“代码>密码字段”,如果@阿纳托利解决方案不起作用,考虑删除集合。@ ELRCO请使用MunGo CLI或其他工具删除MyGoDB中的集合,然后再次运行代码。希望这能奏效。