Node JS Mongoose 异步回调
Node JS Mongoose Async Callbacks
我有一段代码,我似乎有点糊涂了。
它所做的是创建用户。现在,如果用户有一家公司,那么该公司应该与用户一起创建并相应地链接。如果公司已经存在,则不应创建它,也不应将其归于用户。
首先,代码会寻找一家公司,如果找不到,则会创建一家。生活很好。但是,如果我要在我的 "if (!company)" 检查中添加一个 else,我将复制我的大部分创建用户代码。我也相信我无法像通常使用其他语言那样同步检查公司然后 运行 用户创建。因此我有点卡住了..
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' })
})
})
}
})
}
编辑#
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' })
})
}
我不太确定我理解总体目标。但似乎您担心复制添加用户代码,因为无论公司是否已经存在,您都需要添加用户。有什么理由不能先保存用户,然后在回调中,有条件的必要时创建公司?
我有一段代码,我似乎有点糊涂了。 它所做的是创建用户。现在,如果用户有一家公司,那么该公司应该与用户一起创建并相应地链接。如果公司已经存在,则不应创建它,也不应将其归于用户。
首先,代码会寻找一家公司,如果找不到,则会创建一家。生活很好。但是,如果我要在我的 "if (!company)" 检查中添加一个 else,我将复制我的大部分创建用户代码。我也相信我无法像通常使用其他语言那样同步检查公司然后 运行 用户创建。因此我有点卡住了..
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' })
})
})
}
})
}
编辑#
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' })
})
}
我不太确定我理解总体目标。但似乎您担心复制添加用户代码,因为无论公司是否已经存在,您都需要添加用户。有什么理由不能先保存用户,然后在回调中,有条件的必要时创建公司?