Nodejs表示如何从服务返回响应



我正在尝试为注册api创建控制器和服务。我需要尝试的是返回响应到控制器,然后显示到api。

registerservice.js

const { User } = require('../models/user');
async function register(params) {
let user = new User({
name: params.name,
email: params.email,
passwordHash: params.password,
phone: params.phone,
isAdmin: params.isAdmin,
street: params.street,
apartment: params.apartment,
zip: params.zip,
city: params.city,
country: params.country,
})

try {
checkUser = await User.findOne({ email: params.email }).exec()
if (checkUser) {
return res.status(400).send('Duplicate Email')
}
else user = await user.save()
if (!user)
return res.status(400).send('the user cannot be created!')

return res.send(user);
} catch (error) {
console.log(error)
}
}
module.exports = {
register
};

controller.js

router.post("/register",
async (req, res) => {
registerServices.register(req.body).then(
// res.json({success:true})
).catch(err => next(err))

});

我不知道如何从服务返回响应控制器的状态,如果电子邮件重复状态将是400,消息类似于这样。

您的注册服务可以返回状态码和消息作为您在请求处理程序中awaitobject,然后发送给用户:

registerservice.js

const { User } = require('../models/user');
async function register(params) {
let user = new User({
name: params.name,
email: params.email,
passwordHash: params.password,
phone: params.phone,
isAdmin: params.isAdmin,
street: params.street,
apartment: params.apartment,
zip: params.zip,
city: params.city,
country: params.country,
})

try {
checkUser = await User.findOne({ email: params.email }).exec()
if (checkUser) {
return { code: 400, message: 'duplicate email' }
}
else user = await user.save()
if (!user) return { code: 400, message: 'the user can not be created' }

return { code: 200, user };
} catch (error) {
console.log(error)
return { code: 500, message: 'error' }
}
}
module.exports = {
register
};

和controller.js

router.post('/register', async (req, res) => {
let result = await registerServices.register(req.body)
if(result.code != 200) return res.status(result.code).json({
message: result.message,
success: false
})
return res.status(200).json({ user: result.user, success: true })
})