Mongoose有一个功能可以检查字段是否已填充。但只有当响应对象是猫鼬对象时,这才有效。一旦我在查询中使用了lean((,我就无法检查字段是否已填充。
问题:
- 我有一个字段,如果填充了它,就必须检查它。我正在运行一个lean((查询,现在我无法确定字段是否已填充
- 当我检查字段的类型时,它显示它是一个对象
- 如果一个字段是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更多信息