当我创建一个新用户时,我想访问我的用户的角色名称和更新。
如果客户端被重定向为“/company/register”路由,则我的用户角色名称将默认为“company”,如果客户端被重定向为“/user/register”用户角色名称,则它将是guest或等等。我是MongoDB和NodeJS的新手,也许我的观点完全错误,我愿意接受建议。
const UserSchema = new Schema({
email:{
type: String,
required: true,
default: ""
},
encrypted_password:{
type:String,
required:true,
default: ""
},
user_role:[
{
role_name:{
type:String
},
is_company:{
type:Boolean,
default:false
},
write:{
type:Boolean,
default:false
},
read:{
type:Boolean,
default:false
},
publish:{
type:Boolean,
default:false
}
}
],
company:[
{
company_name:{
type:String
},
address:{
type:String
}
}
],
});
我的注册路线
router.post('/register', (req, res) => {
User.findOne({email: req.body.email})
.then(company => {
if (company) {
return res.status(400).json({
email: 'Email already exists'
});
}
else {
const newUser = new User({
// I want to access here
email: req.body.email,
encrypted_password: req.body.encrypted_password,
updated_at: Date.now()
});
bcrypt.genSalt(10, (err, salt) =>{bcrypt.hash(newUser.encrypted_password, salt, (err, hash) => {newUser.encrypted_password = hash;
// New user added
newUser
.save()
.then(user => res.json(user))
.catch(err => console.log(err));
})
})
}
});
});
我已经试过了,当然,它不起作用
const newUser = new User({
email: req.body.email,
encrypted_password: req.body.encrypted_password,
user_role.role_name: "company",
updated_at: Date.now()
});
2条答案
按热度按时间balp4ylt1#
你的解决方案是一个很好的解决方案。我更喜欢摆脱内存分配时间。
我建议以下对象:
基于模式,我认为你需要使用Array而不是对象(我说的是user_role)。您可以在以下部分找到它:
agxfikkp2#
使用此方法