使用 gridfs-stream 存儲文件遇到的一個坑。

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

相關文章
相關標籤/搜索