码迷,mamicode.com
首页 > 其他好文 > 详细

使用 gridfs-stream 存储文件遇到的一个坑。

时间:2015-09-15 14:17:56      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

前一段时间参读了某个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模块 的 \lib\gridfs\grid_store.js  文件里 有个 unlinkStatic 方法,里边有一句

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

  改为:

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

  

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

 

使用 gridfs-stream 存储文件遇到的一个坑。

标签:

原文地址:http://www.cnblogs.com/miaochw/p/4809874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!