Mongoose - 无法检索快速路线中的虚拟字段

Posted

技术标签:

【中文标题】Mongoose - 无法检索快速路线中的虚拟字段【英文标题】:Mongoose - Unable to retrieve virtual fields in express route 【发布时间】:2016-03-24 13:46:07 【问题描述】:

我正在构建一个读取用户列表的 API。我的猫鼬用户模型有一个虚拟字段“全名”,它返回一个包含用户名和姓的串联字符串。 当我读取数据库并从我的 API 以 JSON 格式返回用户时,我无法在返回的 JSON 中看到此字段。

事实证明,JSON stringify 删除了虚拟字段,即使它们的“typeof”返回“string”

我找到了一个解决方案,方法是使用数组映射函数将这些虚拟对象提取到其他属性中,但我必须将所有属性克隆到另一个对象才能使它们通过字符串化。它使我遍历无效的值。我更喜欢更清洁、有记录的解决方案

【问题讨论】:

【参考方案1】:

我一直在向我的 mongoose 架构添加以下选项:

toObject: 
  virtuals: true

,toJSON: 
  virtuals: true

事实证明,在记录整个数据后,它确实可以在 JSON.Stringified 时输出虚拟对象。还需要将 virtuals: true 放在 toObject 选项中。

【讨论】:

以上是关于Mongoose - 无法检索快速路线中的虚拟字段的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 检索没有 _id 字段的数据

如何使用 Autopopulate Mongoose Mongodb 选择要检索的字段?

node18---Mongoose

无法使用 mongoose、Node.js 将数据插入到 mongoDB 中的 Document 字段中

无法使用 mongoose 在 mongodb 中增加字段

无法使用函数(req,res,next,id)mongoose(mongodb)中的动态id字段进行查询