📅  最后修改于: 2023-12-03 15:04:44.651000             🧑  作者: Mango
在 Mongoose 中,当我们定义 Schema 时可以指定某些字段需要进行 populate,当查询到这些字段时,我们可以使用 Query.prototype.getPopulatedPaths() 方法获取实际进行了 populate 的字段列表。
具体来说,Query.prototype.getPopulatedPaths() 是 Query 类的方法,它的作用是获取查询对象中所有已 populate 的路径数组。该方法无需参数,直接使用即可。
例如:
const query = User.find().populate('books');
const paths = query.getPopulatedPaths();
console.log(paths); // ['books']
上述代码定义了一个查询,查询 User 集合并 populate books 字段,然后通过 Query.prototype.getPopulatedPaths() 方法获取到实际进行了 populate 的 fields 数组。如果有多个 populate 字段,它们都会包含在 fields 数组中。
需要注意的是,Query.prototype.getPopulatedPaths() 方法返回的是实际进行了 populate 的字段名称数组,而不是 populate 对象本身。如果需要获取每个 populate 对象的选项,可以使用 Model.populate() 或 Query.populate(path, [select], [model], [match], [options])。
总之,在使用 Mongoose 进行 populate 查询时,Query.prototype.getPopulatedPaths() 是一个非常有用的方法,可以帮助我们更好地理解实际进行了哪些 populate 操作。