【发布时间】:2015-10-27 11:03:12
【问题描述】:
我想将 Mongoose 接收的 JSON 作为查询的一部分指定为 Javascript 对象的自定义转换。通常使用JSON.parse() 或类似的东西。我想使用自己的转换函数,因为我想包含一个名为 __length 的新字段,它是通过网络接收的 JSON 的长度。我不想使用JSON.stringify(document_from_mongo).length(),因为我正在执行不必要的字符串化操作。
我已经研究过在架构上使用自定义 toObject() 或 toJSON() 方法,但没有任何成功。谢谢!
【问题讨论】:
-
那么不幸的是,如果您想将字符串“length”注入返回的对象,那么您所说的“不想做”是唯一获得字符串“length”的地方,因为您需要进行字符串化为了确定。对我来说,这听起来有点多余,因为
Content-Length应该设置在标题中(除非流输出),并且从对象内部读取该字符串长度的任何内容当然都需要首先“解析”对象,这限制了这样的数据。 -
Mongoose 使用流式接口。
-
不,它没有。默认情况下,
.find()和.aggregate()等 mongoose 方法将数据作为数据数组或findBy**变体中的单个对象返回。对于输出流,您需要专门调用.stream()(在 find 上,聚合的光标选项)或使用几乎相同的东西调用本机驱动程序方法。所以它不是一个流,而是一个普通的对象,除非你另有要求。即使您要求一个流,您要求的是所发出的 JSON 的“字符串长度”。如果不对对象或流进行字符串化,您将无法做到这一点。上面提到的关于实用程序的相同点。 -
听起来不错,我对 Mongooses 内部结构的了解有限,因此我将深入研究。我确实认为您可以在不进行字符串化的情况下获得响应长度,因为它已经以这种方式从数据库服务器到达。使用 Content-Length 将非常适合我们需要的东西,所以在我尝试发布的其他解决方案后我会研究它。谢谢!
标签: javascript node.js mongoose