Я делаю быстрый прототип приложения MERN, у меня есть внутренний вопрос: у меня есть модель User и модель Category, когда пользователь регистрируется, мне нужно заполнить модель категории некоторой базовой информацией, экспортированной изобъект, который пользователь может редактировать позже.Я хотел бы назначить каждой категории ссылку на только что созданный идентификатор учетной записи.Проблема в том, что я не понимаю, как я могу получить только что созданный идентификатор пользователя.Вот мой маршрут (да, это не рефакторинг, извините):
// @route POST api/users/register
// @desc Register user
// @access Public
router.post('/register', (req, res)=>{
//Validate req.body
const {errors, isValid} = validateRegisterInput(req.body);
//Check validation
if(!isValid){
return res.status(400).json(errors);
}
User.findOne({ email: req.body.email })
.then(user => {
if(user){
errors.email = 'Email already exists';
return res.status(400).json(errors)
} else {
const avatar = gravatar.url(req.body.email, {
s: '200', //Size
r: 'pg', //Rating
d: 'mm' //Default
});
const newUser = new User({
name: req.body.name,
email: req.body.email,
avatar,
password: req.body.password
});
//Hash the password and save
bcrypt.genSalt(10, (err, salt)=>{
bcrypt.hash(newUser.password, salt, (err, hash)=>{
if(err) throw err;
newUser.password = hash;
newUser.save()
.then(user => res.json(user))
.catch(err => console.log(err))
})
});
//Fill user categories with default categories
defaultIcons.map((icon) => {
const newCategory = new Category ({
name: icon.name,
type: icon.type,
icon: icon.icon
})
newCategory.save();
});
}
})
});
А это схема категории:
//Create Schema
const CategorySchema = new Schema({
//Every account is associated with actual User schema by id
user: {
type: Schema.Types.ObjectId,
ref: 'users'
},
name: {
type: String,
required: true
},
type: {
type: String,
required: true
},
icon: {
type: String,
required: true
}
})
Каково было бы лучшее решение для этого?Лучше ли иметь отдельную схему для категорий, как я делаю, или я могу реализовать поле массива объектов в схеме пользователя?