Gridfs无法在不同的存储桶中找到文件

时间:2014-10-29 07:12:38

标签: node.js mongodb mongoose gridfs gridfs-stream

我已将一个文件添加到集合my_collections

我无法检查文件是否已保存。

使用默认存储区(fs.chunkfs.files),下面的代码正常运行

db.my_collection.files.find()

{ "_id" : ObjectId("50e03d29edfdc00d34000001"), "filename" : "hd.txt", "contentType" : "plain/text", "length" : 85, "chunkSize" : 1024, "uploadDate" : ISODate("2014-10-29T06:57:42.375Z"), "aliases" : null, "metadata" : {  }, "md5" : "dc20cdc19005d04b8c36a889128170a8" }

代码:

var conn = mongoose.createConnection('localhost', 'testgridfs');
conn.once('open', function () {
var gfs = Grid(conn.db, mongoose.mongo);


  var options =  {
    _id: '50e03d29edfdc00d34000001', // a MongoDb ObjectId
    filename: 'hd.txt', // a filename
    mode: 'w',
    chunkSize: 1024,
    content_type: 'plain/text',
    root: 'my_collection',//<<<<< **if i comment it ,default collection is taken and codee works fine**
    metadata: {}
  }



  // write (this works in both default and custom bucket case)
  // var writestream = gfs.createWriteStream(options);
  // fs.createReadStream('/home/pop/Downloads/hd.txt').pipe(writestream);


  //chk exits or not
  gfs.exist(options  , function (err, found) {
    if (err) return handleError(err);
      found ? console.log('File exists') : console.log('File does not exist');
    });  
})

该文件显示在db.my_collection.files中,但代码显示为File does not exist

如果删除了root选项,则相同的代码可用。

我想使用the GridFS reference中记录的多个存储桶。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

问题在于版本。 github上的代码是最新的0.5.3 在npm上它是0.5.1 ..

所以我从github手动下载,一切正常。 https://github.com/aheckmann/gridfs-stream