下面是根据你的需求,补充了删除当前节点及其子节点的具体代码:
func deleteNode(db *gorm.DB, nodeID int) error {
// 查询待删除节点是否存在
var node NginxResourceGroup
if err := db.Where("ID = ?", nodeID).First(&node).Error; err != nil {
return errors.New("待删除节点不存在")
}
// 删除当前节点及其子节点
if err := db.Where("ID = ? OR Pid = ?", nodeID, nodeID).Delete(&NginxResourceGroup{}).Error; err != nil {
return err
}
return nil
}
上述代码首先通过查询数据库获取待删除的节点信息,如果节点不存在,则返回错误信息。然后,使用条件语句db.Where("ID = ? OR Pid = ?", nodeID, nodeID)来同时匹配当前节点和其子节点,并使用Delete()方法从数据库中删除相应记录。最后,返回适当的错误信息或nil表示删除成功。请根据实际需求进行适当修改和完善。
内容由零声教学AI助手提供,问题来源于学员提问




