前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sequelize中批量删除

Sequelize中批量删除

作者头像
用户6256742
发布2022-07-06 14:18:40
2.5K0
发布2022-07-06 14:18:40
举报
文章被收录于专栏:网络日志网络日志

Sequelize中有批量查询findAll、批量创建bulkCreate,同时可以通过where进行条件筛选进行批量更新,在一次需要进行评论删除的功能实现时,我没有在文档中找到批量删除,原本是打算使用[Op.in]然后传递数组实现,在查询相关文章后发现where中可以直接传递数组。

例:

代码语言:javascript
复制
let rows = await Comment.destroy({
    where: {
    id:[1,2,3]
   }
});

这样的话只要Model中有ID在数组中都可以被删除,下面贴一下我删除评论功能的实现代码,作为参考,因为删除评论需要递归查询相关的子评论进行删除,所以也是需要删除数组。

代码语言:javascript
复制
import { Comment } from "@/db";
import { sign } from "@/common/guards/auth";
import express, { NextFunction, Response, Request } from "express";
const router = express.Router();

interface whereType {
  id:string[];
  commentator?: string;
}

/**
 * 传递需要删除的评论的ID,递归查询并返回所有子评论
 * @params id {string} 需要删除的初始ID
 * @return comments {string[]} 所有子评论的ID
 */
async function getAllComment(id: string) {
  let comments: string[] = [id];
  /** 查询单个评论的子评论并推进数组*/
  async function getCommentId(id: string) {
    let comment_id = await Comment.findAll({
      where: {
        superior: id,
      },
      attributes: ["id"],
    });
    comments.push(...comment_id.map(item => item.id));
    if (comment_id.length) {
      for (let index = 0; index < comment_id.length; index++) {
        await getCommentId(comment_id[index].id);
      }
    }
  }
  await getCommentId(id);
  return comments;
}

router.delete("/comment/:id", sign, async (req: Request, res: Response, next: NextFunction) => {
  let id = req.params.id;
  let deleteWhere: whereType = { id: await getAllComment(id) };
  if (req.authentication != "admin") deleteWhere.commentator = req.userId + "";
  let rows = await Comment.destroy({
    where: deleteWhere as unknown as whereType,
  });

  res.json({
    success: !!rows,
    message: `删除${rows ? "成功" : "失败"}`,
  });

});
export default router;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档