MongoDB如何访问关系模型和更新

jaql4c8m  于 2023-10-16  发布在  Go
关注(0)|答案(2)|浏览(90)

当我创建一个新用户时,我想访问我的用户的角色名称和更新。
如果客户端被重定向为“/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()
                });
balp4ylt

balp4ylt1#

你的解决方案是一个很好的解决方案。我更喜欢摆脱内存分配时间。
我建议以下对象:

const tempUser = {};
tempUser = {
    email: req.body.email,
    encrypted_password: req.body.encrypted_password,
    user_role: {
        role_name:"company",is_company:true
        },
    updated_at: Date.now()
}
const newUser = new User(tempUser);

基于模式,我认为你需要使用Array而不是对象(我说的是user_role)。您可以在以下部分找到它:

const tempUser = {};
tempUser = {
    email: req.body.email,
    encrypted_password: req.body.encrypted_password,
    user_role: [{
        role_name:"company",is_company:true
        }],
    updated_at: Date.now()
}
const newUser = new User(tempUser);
agxfikkp

agxfikkp2#

使用此方法

const company_user_role = {role_name:"company",is_company:true};
                const newUser = new User({
                    email: req.body.email,
                    encrypted_password: req.body.encrypted_password,
                    user_role: company_user_role,
                    updated_at: Date.now()
                });

相关问题