当前位置: 首页 > 面试题库 >

MongoDB GridFS使用Node.JS保存文件时出现问题

白永昌
2023-03-14
问题内容

我有一个将文件保存到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    });

问题答案:

有两种解决方案。您可以使用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



 类似资料:
  • 此代码从您要在editText中注册的熟人处接收信息,然后单击finButton将接收到的信息保存为一个名为FriendList.txt的文件。但是,当按下finButton时,将从当前执行的try-catch语句中输出Toast消息。此外,checkpermission也不起作用,它包装在try~catch语句中,但在logcat上没有输出。 和显化。 洛克卡特

  • 然后将这个变量添加到arrayList,我在程序中调用WriteToFile()方法。 AddBookDialog类的代码 WriteFile类的代码 相反,当我尝试向该文件写入另一本书时,它反而覆盖了第一行 哈姆雷特:威廉莎士比亚:企鹅:FIC Shak:23 //《哈利·波特》的书中详细内容已被改写

  • 我有一个CSV文件,我想在我的弹性搜索中导入它。 我用的是Windows 10,我也有一个Kibana,可以在导入后浏览数据。我使用Logstash来尝试导入。 我的所有服务(Kibana、es和Logstash)都在我的本地主机上运行。 我尝试使用以下Logstash配置文件(我的csv文件在正确的路径中): 如您所见,我试图使用“csv”或“grok”过滤器。 然后,我在详细模式下使用以下配置

  • 这段代码第一次可以运行得很好,但是当我第二次运行app时,它不会立即生成PDF文件。

  • 文件上载返回“状态代码8-无效参数”响应。想知道是什么导致了这种情况。 我使用Chilkat sFTP在多个合作伙伴之间传输和接收文件,没有问题,但是对于一个新的合作伙伴,我看到以下错误。合作伙伴的技术团队正在询问是否正在调用被动连接,但我在Chilkat中看不到任何可以让我改变这一点的属性。 日志消息:

  • 我有一个经过数字签名的文档,当从第一个文档创建新文档时,它会丢失签名,这里我显示了代码: 有没有办法让新文件保持签名?谢谢 编辑:签名出现在新文档上,但显示为“未知”。也就是说,签名人的姓名不会出现