2011-08-04 47 views
2

我有一個將文件保存到gridfs的函數。它不知何故在重構後偶爾停止工作,我花了2個多小時茫然地看着它。我發誓它和它大致相同。我似乎記得它在開始工作之前一開始不工作,然後開始工作,但可能是失眠。本質上,問題在於db.fs.files集合沒有任何記錄,但塊已添加到db.fs.chunks。MongoDB GridFS問題使用Node.JS保存文件

數據是()經由fs.readFile從磁盤加載緩衝器

31 var gs = new mongodb.GridStore(this.db, filename, "w", { 
32  "chunk_size": 1024*4, 
33  metadata: { 
34   hashpath:gridfs_name, 
35   hash:hash, 
36   name: name 
39  } 
40 }); 
41 gs.open(function(err,store) { 
42  gs.write(data,function(err,chunk) { 
43   //cb(err,hash,chunk); 
44   //self.close(); 
45  }); 
46 }); 

回答

6

有幾個解決方案。您可以使用writeBuffer,writeFile或新的簡單網格類。在你的例子下調整了使用緩衝區實例的事實。

// You can use an object id as well as filename now 
var gs = new mongodb.GridStore(this.db, filename, "w", { 
    "chunk_size": 1024*4, 
    metadata: { 
    hashpath:gridfs_name, 
    hash:hash, 
    name: name 
    } 
}); 

gs.open(function(err,store) { 
    // Write data and automatically close on finished write 
    gs.writeBuffer(data, true, function(err,chunk) { 
    // Each file has an md5 in the file structure 
    cb(err,hash,chunk); 
    }); 
}); 

一般來說,最好的開始是覆蓋gridfs類的廣泛使用情況的測試。看着。

https://github.com/christkv/node-mongodb-native/tree/master/test/gridstore

+0

其實這還不文件雖然在集合創建和塊仍保存保存到fs.files。寫完後我無法查找文件。這是真氣:( –

+0

它不寫,除非close()在writeBuffer回調。 –

相關問題