【问题标题】:Mongoose - populate a single document by its IDMongoose - 按其 ID 填充单个文档
【发布时间】:2020-12-08 03:14:36
【问题描述】:

我有一个名为 category 的模型,它有 2 个字段 类别名称书籍

books 字段是书籍 ID 的数组((refrences))

我想在调用要填充的 .populate() 时指定一个 id,而不是在 MongoDB + Mongoose 中填充整个数组

我的代码:

categories.get('/bookId', async (req, res) => {
    const bookId = req.params.bookId;
    try {
        const categories = await Category.find().populate('books') 
        if (!categories || categories.length == 0) return res.status(404).send("No categories found");
        res.status(200).send(categories);
    } catch (error) {
        res.send(error.message);
    }
});

【问题讨论】:

  • 请提供您目前尝试过的代码。谢谢。
  • 代码填充整个数组,我们想使用参数 (bookId) 来填充特定书籍的 id,而不是填充整个数组
  • categories.get('/bookId', async (req, res) => { const bookId = req.params.bookId; try { const categories = await Category .find() .populate(' books') if (!categories || categories.length == 0) return res.status(404).send("No categories found"); res.status(200).send(categories); } catch (error) { res.send(error.message); } });

标签: arrays mongodb mongoose


【解决方案1】:

如果您只想通过 ID 填充特定书籍,那么您可以像这样使用match

categories.get('/bookId', async (req, res) => {
    const bookId = req.params.bookId;
    try {
        const categories = await Category.find().populate({
            path: 'books', 
            match: { _id: bookId }
        }) 
        if (!categories || categories.length == 0) return res.status(404).send("No categories found");
        res.status(200).send(categories);
    } catch (error) {
        res.send(error.message);
    }
});

【讨论】:

    猜你喜欢
    • 2013-03-23
    • 2014-08-06
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2017-03-21
    • 2017-06-06
    相关资源
    最近更新 更多