当前位置: 首页 > 知识库问答 >
问题:

如何保存返回的原型对象在nodejs?

苍德寿
2023-03-14

在我的代码中,一个函数返回一个protobuf对象,我想把它保存在一个文件xyz中。pb
当我试图使用fs保存它时。writefilesync没有保存它。

它本质上是圆形的。所以,我尝试使用循环json模块保存它,以确认其中是否有任何内容,以及它是否有数据。

但是,由于我首先使用了循环json,它没有正确的信息(格式不正确),也没有任何用处。

如何使用nodejs将此原型保存在文件中?

谢谢

共有3个答案

慕容嘉荣
2023-03-14

我发现了如何轻松地将protobuf对象保存到文件中。

原型对象转换为缓冲区,然后保存它。

const protobuf = somefunction(); // returning protobuf object  
const buffer = protobuf.toBuffer();  

fs.writeFileSync("filename.pb", buffer);
龙正初
2023-03-14

协议缓冲区的用途是将强类型消息序列化为二进制格式并返回到消息中。如果要将内存中的消息写入文件,请先将消息序列化为二进制,然后将二进制写入文件。

NodeJS缓冲区文档

NodeJS将二进制缓冲区写入文件

协议缓冲区JavaScript SDK文档

应该是这样的:

const buffer = messageInstance.serializeBinary()
fs.writeFile("filename.pb", buffer, "binary", callback)
程旭尧
2023-03-14

您可以尝试使用流,如留档中提到的

如下

const crypto = require('crypto');
const fs = require('fs');
const wstream = fs.createWriteStream('fileWithBufferInside');
// creates random Buffer of 100 bytes
const buffer = crypto.randomBytes(100);
wstream.write(buffer);
wstream.end();

或者,您可以将缓冲区转换为JSON,并将其保存在文件中,如下所示:

const crypto = require('crypto');
const fs = require('fs');
const wstream = fs.createWriteStream('myBinaryFile');
// creates random Buffer of 100 bytes
const buffer = crypto.randomBytes(100);
wstream.write(JSON.stringify(buffer));
wstream.end();

如果你的应用程序逻辑不需要使用sync nature,你就不应该使用writeFileSync,因为它会阻塞你的代码,直到代码结束,所以要小心。尝试使用writeFile或Streams,这样更方便。

 类似资料:
  • 问题内容: 我使用Spring 3.2.3和Hibernate 4.2.3和JDK 7。 我有一个简单的实体: 我使用带有注释方法的带注释的类保存了该实体的实例,该方法使用了DAO,该DAO将对象保存为 之后,我使用 保存的 实体进行创建,该实体在关系中使用了它… 并定义为… 我总是例外 我尝试在其他文章中建议的与的关系中使用一些层叠定义,但没有效果。 如果我通过使用某些HQL查询通过查找保存的实

  • 注意:请通读后再回答。这看起来是一个简单的问题,但我不确定它是否如此简单。另外,我是打字新手,所以对我宽容点 所以这是用例。我有一个模型用户,我编写了一个通用函数来根据数据库中的电子邮件检查用户是否存在。如果存在,则返回用户对象。 现在,如果它是任何其他对象,那么我可以定义类型并继续我的代码,但它是我从DB得到的用户对象,不知道如何解决这个问题。 我通过提到返回类型“any”找到了解决方法,但我的

  • 我是反应式编程新手,目前我有以下问题。我有一个人类的目标。具有属性id、firstName、lastName和List的java类 人类JAVA Hobbies.java 人Config.java 人形路由器。JAVA 人类训练师。JAVA 人力服务。JAVA 人性化的应用。JAVA 我在POST请求的正文中放入Postman的json对象如下所示: docker撰写。亚马尔 应用属性 我真的不知

  • 问题内容: 我正在尝试从call()返回2D数组,但遇到了一些问题。到目前为止,我的代码是: 这段代码会编译,这不会返回我的数组。我确定我可能使用了错误的语法,但是找不到任何好的示例。 编辑:改变了一点 问题答案: 添加到Joseph Ottinger的答案中,要传递要在Callable的call()方法中使用的值,可以使用闭包:

  • 本文向大家介绍在MongoDB中如何获取保存的对象?,包括了在MongoDB中如何获取保存的对象?的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个变量。以下是查询- 以下是使用save()保存记录的查询- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出-

  • 这是UML图中的实例方法: 此方法的目的是返回客户银行账户的所有汇总详细信息。 BankAccount是包含名称、帐户编号、余额和状态的类: 在BankManager类中,有一个实例变量: 方法),这将打印出所有的客户详细信息?