【发布时间】:2021-10-19 16:45:02
【问题描述】:
router.delete('/delete',authenticate,async(req, res)=>{
const user = User.findById(req.rootUser._id)
{
try{
await Post.deleteMany({postedBy:rootUser})
await User.findByIdAndDelete(req.rootUser._id)
res.status(200).json(err);
}catch(err){
res.status(500).json(err);
}
}
})
rootUser是用户,我们可以通过认证访问。
如果我使用 id 方法,例如 router.delete(':/id...... 那么如何访问帖子,因为帖子ID与用户ID不同。
后架构:
const mongoose = require('mongoose');
const {ObjectId} = mongoose.Schema.Types
const postSchema = new mongoose.Schema({
heading:{
type:String,
required: true
},
confess:{
type: String,
required:true
},
likes:[{type:ObjectId,ref:"USER"}],
postedBy:{
type: ObjectId,
ref: "USER"
}
});
const Post = module.exports = mongoose.model('POST', postSchema);
module.exports = Post;
【问题讨论】:
-
注意:这确实应该是一个事务,所以如果一个失败,则会回滚,并且只有在两个查询都成功时才提交。 mongoosejs.com/docs/transactions.html - 现在的代码可能有一个承诺失败而另一个承诺成功。
标签: node.js mongodb express mongoose mern