我有一个将文件保存到gridfs的功能。在某个重构之后它以某种方式停止了零星的工作,我花了两个多小时茫然地盯着它。我发誓它和它一样大致相同。我似乎记得它在我加入之前没有工作,然后它开始工作,但它可能是失眠。基本上问题是db.fs.files集合没有任何记录,但是块被添加到db.fs.chunks。
数据是通过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 });
答案 0 :(得分:6)
有几种解决方案。您可以使用writeBuffer,writeFile或新的简单网格类。 Under是您使用缓冲区实例调整的示例。
// 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