【问题标题】:Delete image with full url from cloudinary not working - Nodejs从 cloudinary 中删除带有完整 url 的图像不起作用 - Nodejs
【发布时间】:2020-09-01 15:02:00
【问题描述】:

我正在尝试通过我的 express 应用程序从 cloudinary 中删除图像,只有当我缩短 url 以匹配我创建的 cloudinary 文件夹时它才有效

pictures : "Images/zebre_s2gtto"

我的图片的完整网址是

https://res.cloudinary.com/beloved/image/upload/v1589562378/Images/zebre_s2gtto.jpg

主要问题是图片url存储在数据库中,包含完整的图片url。

当我想从 cloudinary 和我的数据库中删除图像时,如果我提到完整的 url,图像会从我的数据库中删除,但不会在 cloudinary 中,如果我提到来自 cloudinary 的短 url,图像会从 cloudinary 中删除但是 url 没有从我的数据库中删除,因为 mongo 正在等待图像的完整 url,而 cloudinary 需要缩短的 url。

我的猫鼬模式

{
  pictures : Array
}

我想做什么

deletePictures = async (req, res) => {
  const img = req.body.pictures
  try {
    await cloudinary.v2.uploader.destroy(
      img, { invalidate: true, resource_type: "image" }, async (error, result)=> {
      if (error){
        return res.status(400).json(error)
      }
       await  Property.updateOne({$pull : { pictures: img }});
      res.json(result)
      })
  }
  catch (e) {
    res.status(500).json('Something went wrong')
  }
};

使用 PUT 方法的邮递员测试

{
    "pictures" : "https://res.cloudinary.com/beloved/image/upload/v1589562378/Images/zebre_s2gtto.jpg"
}

【问题讨论】:

    标签: node.js express mongoose cloudinary


    【解决方案1】:

    无法通过 URL 从 Cloudinary 中删除资源,您需要使用 public_id(即您所指的“短 URL”)。最常见的工作流程是将 public_id 存储在您的数据库中,因为它用于所有 API 操作(删除、更新等)。对于 URL 生成,您可以使用 public_id 并将其传递给 Cloudinary SDK 帮助方法,这些方法在本地构建 URL 并将 URL 输出到资产。也可以为这些方法提供任何一组转换选项。有关每个 SDK 的示例,请参阅以下部分 - https://cloudinary.com/documentation/image_transformations#embedding_images_in_web_pages

    我建议您从存储 URL 迁移并更新您的数据库以引用并保留 public_id。您可以运行一次性脚本以从现有 URL 中提取 public_id,然后针对当前记录相应地更新架构。对于新的上传,您可以直接从 API 响应中获取 public_id 参数。

    【讨论】:

      【解决方案2】:

      嗯,对我来说,我将 public_id 和 url 都存储在数据库中,这样我就可以灵活地进行查询和检查,而不仅仅是存储 public_id,然后在每次需要 url 时使用 Cloudinary SDK 辅助方法。

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 1970-01-01
        • 2020-05-05
        • 2020-03-02
        • 2020-12-18
        • 2013-11-01
        • 2020-11-05
        • 2021-07-12
        • 1970-01-01
        相关资源
        最近更新 更多