标签:
前一段时间参读了某个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)
即可。 具体原因自己去看源码吧。
标签:
原文地址:http://www.cnblogs.com/miaochw/p/4809874.html