如何在使用lean()后检查字段是否由mongoose填充



Mongoose有一个功能可以检查字段是否已填充。但只有当响应对象是猫鼬对象时,这才有效。一旦我在查询中使用了lean((,我就无法检查字段是否已填充。

问题:

  1. 我有一个字段,如果填充了它,就必须检查它。我正在运行一个lean((查询,现在我无法确定字段是否已填充
  2. 当我检查字段的类型时,它显示它是一个对象
  3. 如果一个字段是lean((查询,有没有办法检查它是否被填充

基于https://mongoosejs.com/docs/populate.html#checking-populated我为这个问题创造了一个有点可疑的解决方案。

lean()使其成为POJO(Plain Old Json Object(。因此,不再存在mongoose函数,因为这是使用lean()的全部意义:轻量级对象。更多关于精益:https://mongoosejs.com/docs/tutorials/lean.html#using-贫

当仍在查询中时,可以在精简后对查询使用populate:https://mongoosejs.com/docs/tutorials/lean.html#lean-并填充

const group = await Group.findOne().lean().populate('members');
group.members[0].name; // 'Benjamin Sisko'
group.members[1].name; // 'Kira Nerys'

如果你对你的对象一无所知,你可以使用原始模型来填充它:

group = await Group.populate(group, 'members')

检查https://mongoosejs.com/docs/populate.html#populate_multiple_documents更多信息

最新更新