我一般都不熟悉Node和Javascript,我想知道在使用.save之前是否应该使用FindOne来验证唯一性。
我的用户架构确实为电子邮件和用户名设置了Unique:true,并且我的当前代码像超级按钮一样工作,因为猫鼬返回了唯一性错误消息。
我想知道在尝试提高效率或其他目的之前验证唯一性是否更好?
当前代码如下:
export const createUser = (data) => {
return new Promise( async (resolve, reject) => {
const userData = JSON.parse(data);
const newUser = new User(userData);
await newUser.save((err) => {
if(err){
const msg = err.errmsg.toLowerCase();
const errormsg = msg.includes('email') ? 'Email already in use' : msg.includes('username') ? 'Username already in use' : 'Unexpected error.'
reject(JSON.stringify({error: errormsg}));
}
resolve(JSON.stringify({status: 200, created: true}));
});
});
};
在这里实现:
public register(req, res){
validateRegisterForm(req.body).then(data => {
createUser(data).then(resp => {
res.send(resp);
}).catch(err => {
res.send(err);
})
}).catch(err => {
res.send(err);
});
}