mongoose findMany查询,有参考文献。

问题描述 投票:0回答:1

我是一个新手,我真的没有找到任何关于mongoose的参考资料。populate 处理findMany查询,具有 ref

例如,我有一个 categories 采集和 products 集合,因为产品可以被分配到许多类别,这就是为什么它们存在于两个不同的集合中。

现在如果我调用 findMany 办法 categories 收集和 populateproducts Mongoose会执行每个类别的产品查找吗? 还是会收集所有被引用的产品ID,并在一个查询中查询所有产品,如 dataloader 做什么?

node.js mongodb mongoose dataloader
1个回答
0
投票

你应该有两个模式,类别和产品。

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 ..." })
        }
    })()
});
© www.soinside.com 2019 - 2024. All rights reserved.