我是猫鼬的新手,我真的没有找到任何参考,猫鼬如何populate
处理 findMany 查询ref
例如,我有一个categories
集合和一个products
集合,因为产品可以分配给许多类别,这就是它们存在于 2 个不同集合中的原因。
现在,如果我在集合上调用findMany
方法,并且猫鼬会按类别执行查找产品吗?或者将收集所有引用的产品 ID,并在一个查询中查询所有产品,就像这样做?categories
populate
products
dataloader
我是猫鼬的新手,我真的没有找到任何参考,猫鼬如何populate
处理 findMany 查询ref
例如,我有一个categories
集合和一个products
集合,因为产品可以分配给许多类别,这就是它们存在于 2 个不同集合中的原因。
现在,如果我在集合上调用findMany
方法,并且猫鼬会按类别执行查找产品吗?或者将收集所有引用的产品 ID,并在一个查询中查询所有产品,就像这样做?categories
populate
products
dataloader
您应该有两个模式,类别和产品:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const productSchema = Schema({
_id: Schema.Types.ObjectId,
name: String,
price: Number,
// ...
categories: [{ type: Schema.Types.ObjectId, ref: 'Category' }]
});
module.exports = mongoose.model('Product', productSchema );
const categorySchema = Schema({
title: String,
description:String,
products: [{ type: Schema.Types.ObjectId, ref: 'Product' }]
});
module.exports = mongoose.model('Category', categorySchema );
要通过填充产品的 id 查找类别,您可以:
app.get('/categories/:id', (req, res) => {
const categoryId = req.params.id;
(async () => {
try {
const categories = await Categories
.find({ _id: categoryId }).populate("products") // you'r populating the property of the schema called products
res.status(200).json({ results: categories })
} catch (err) {
res.status(500).json({ message: "Error ..." })
}
})()
});