zoukankan      html  css  js  c++  java
  • 使用 gridfs-stream 存储文件遇到的一个坑。

    前一段时间参读了某个coder写的用 gridfs-stream 来存储文件,感觉不错就自己用 gridfs-stream 模块写了一个文件存储服务,但是发现存储的文件总是删不掉, 我调用的是GFS的remove api, 删除条件是用的 _id  。

      gfs.remove({_id: 'xxxxxx'}, callback);
    

    耐着性子 查看一下源码,发现 导致问题的直接原因是因为 我没用 MongoDb 的 ObjectId 做为  _id 导致的。 我用的是自己定义的字符串。

    回头找了一下gridfs-stream  的文档,终于在一段示例代码的注释里发现

    _id: '50e03d29edfdc00d34000001', // a MongoDb ObjectId
    

      顿时一万只草泥马。。。。

    如果一定要自定义字符串当做文件存储的_id 的话,也是有办法的, 不过要修改一下MongoDb模块的源码,在MongoDb模块 的 libgridfsgrid_store.js  文件里 有个 unlinkStatic 方法,里边有一句

    new GridStore(db, names, "w", options)
    

      改为:

    new GridStore(db, names,'', "w", options)
    

      

     即可。 具体原因自己去看源码吧。

  • 相关阅读:
    商品表(spu)、规格表(sku)设计
    Links
    About
    AFO
    口胡题
    NOIP2014 飞扬的小鸟
    CSP2019 Emiya 家今天的饭
    CSP2019 括号树
    CSP-J2019 加工零件
    CSP-J2019 纪念品
  • 原文地址:https://www.cnblogs.com/miaochw/p/4809874.html
Copyright © 2011-2022 走看看