前一段时间参读了某个coder写的用 gridfs-stream 来存储文件,感受不错就本身用 gridfs-stream 模块写了一个文件存储服务,可是发现存储的文件老是删不掉, 我调用的是GFS的remove api, 删除条件是用的 _id 。javascript
gfs.remove({_id: 'xxxxxx'}, callback);
耐着性子 查看一下源码,发现 致使问题的直接缘由是由于 我没用 MongoDb 的 ObjectId 作为 _id 致使的。 我用的是本身定义的字符串。java
回头找了一下gridfs-stream 的文档,终于在一段示例代码的注释里发现api
_id: '50e03d29edfdc00d34000001', // a MongoDb ObjectId
顿时一万只草泥马。。。。3d
若是必定要自定义字符串当作文件存储的_id 的话,也是有办法的, 不过要修改一下MongoDb模块的源码,在MongoDb模块 的 \lib\gridfs\grid_store.js 文件里 有个 unlinkStatic 方法,里边有一句code
new GridStore(db, names, "w", options)
改成:blog
new GridStore(db, names,'', "w", options)
便可。 具体缘由本身去看源码吧。ip