Mongoose检查是否存在电子邮件和通道名称(两个不同的集合),然后保存引用



是否有一个更好的解决方案来检查两个集合,然后保存一个引用,但如果出现问题,删除你已经创建的一个

在这段代码中,我想检查集合中是否存在一个电子邮件,而另一个中是否存在一个通道名。接下来,保存一个用户帐户,然后创建一个引用用户帐户的用户通道,但是如果发生了什么,则删除一个用户帐户并向客户机返回一个错误。

let error = {}
await userSchema.findOne({email:body.email},(err, doc) => 
{ 
if(err){
return console.log(err)
}
if(doc){
error.email = `Email ${data.email} already used!`
}
})
await channelSchema.findOne({channelname:body.channelname},(err, doc) => 
{ 
if(err){
return console.log(err)
}
if(doc){
error.channelname = `Channel name ${data.channelname} already used!`
}
})
if(error !== {}) {
return res.status(400).json(error)
}else{
const newUser = new userSchema({
email:body.email,
password: data.password
})
const newProfile = new channelSchema({
owner:newUser.id,
channelname: body.channelname
})

不要将.then .catch与await一起使用,而是将async/awaittry/cathc一起使用。

try {
let error = {};
let user = await userSchema.findOne({ email: body.email });
if (user) {
error.email = `Email ${data.email} already used!`;
return res.status(400).json(error);
}
let channel = await channelSchema.findOne({ channelname: body.channelname });
if (channel) {
error.channelname = `Channel name ${data.channelname} already used!`;
return res.status(400).json(error);
}
const newUser = new userSchema({
email: body.email,
password: data.password,
});
const newProfile = new channelSchema({
owner: newUser.id,
channelname: body.channelname,
});
} catch (error) {
return console.log(err);
}

最新更新