前一段時間參讀了某個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