2011-08-04 12 views
2

ファイルをgridfsに保存する機能があります。それはどういうわけか、リファクタリングの後に散発的に働くことを止め、2時間以上それを空白で見つめてしまった。私はそれがほぼ同じであることを誓う。私は近くに追加する前にそれが最初に働いていないことを覚えているようだが、それから作業が始まりましたが、それは不眠症の可能性があります。本質的に問題は、db.fs.filesコレクションにはレコードがありませんが、db.fs.chunksにチャンクが追加されていることです。MongoDB GridFSに関する問題Node.JSでファイルを保存する

データはソリューションのカップルがあります

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

fs.readFileを経由してディスクからロードバッファー()です。 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); 
    }); 
}); 

一般的には、グリッドクラスの幅広い使用プロファイルをカバーするテストが最適です。見る。

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

+0

コレクションが作成され、チャンクがまだ保存されているが実際にはこれはまだfs.filesにファイルを保存しません。私はそれが書かれた後、ファイルを参照することはできません。これは怒っています:( –

+0

close()がwriteBufferコールバックにない限り、書き込みを行いません。 –

関連する問題