У меня есть этот кусок кода, с которым я, похоже, немного путаюсь.
Что он делает, так это создает пользователей. Теперь, если у пользователя есть компания, тогда эта компания должна быть создана вместе с пользователем и соответствующим образом связана. Если компания уже существует, ее не следует создавать и не следует приписывать пользователю.
Сначала код ищет компанию, если она не может найти, то создается. Жизнь хороша. Но если бы я добавил еще один к моей проверке "if (! Company)", я бы дублировал большую часть моего кода создания пользователя. Я также считаю, что не могу проверить компанию, а затем запустить создание пользователя синхронно, как обычно на другом языке. Поэтому я немного застрял ..
module.exports = {
postUsers: (req, res) => {
'use strict'
Company.findOne({name: req.body.company}, (err, company) => {
if (err) {
Logger.error(err)
return res.send(500, err)
}
if (!company) {
// only attribute a company if one doesn't exist
// don't want users to assign themselves to existing companies automatically
// need approval in place from an existing company member
let newCompanyToAdd = new Company({
name: req.body.company
})
newCompanyToAdd.save(err => {
if (err) {
Logger.error(err)
return res.send(500, err)
}
let user = new User({
username: req.body.username,
password: req.body.password,
firstname: req.body.firstname,
lastname: req.body.lastname,
company: newCompanyToAdd.id
})
user.save(err => {
if (err) {
return res.send(500, err)
}
res.status(200).json({ message: 'New User Added' })
})
})
}
})
}
EDIT #
postUsers: (req, res) => {
'use strict'
let user = new User({
username: req.body.username,
password: req.body.password,
firstname: req.body.firstname,
lastname: req.body.lastname
})
Company.findOne({name: req.body.company}, (err, company) => {
if (err) {
Logger.error(err)
return res.send(500, err)
}
if (!company && req.name.company !== undefined) {
// only attribute a company if one doesn't exist
// don't want users to assign themselves to existing companies automatically
// need approval in place from an existing company member
let newCompanyToAdd = new Company({
name: req.body.company
})
newCompanyToAdd.save(err => {
if (err) {
Logger.error(err)
return res.send(500, err)
}
user.company = newCompanyToAdd._id
})
}
})
user.save(err => {
if (err) {
return res.send(500, err)
}
res.status(200).json({ message: 'New User Added' })
})
}