【问题标题】:populate collection is returning an empty array in mongoose using express填充集合使用 express 在 mongoose 中返回一个空数组
【发布时间】:2022-12-09 03:04:25
【问题描述】:

这就是我的 Like 模型架构的样子。


//create likes schema
const likes = mongoose.Schema({
    liked: {
        type: Boolean,
        default: false
    },
    tweet: {
        type: Schema.Types.ObjectId,
        ref: "Tweet"
    },
    author: {
        type: Schema.Types.ObjectId,
        ref: "User"
    }
});


module.exports = mongoose.model('Like', likes);

这是我的推文架构概述:

const tweets = mongoose.Schema({
    content: {
        type: String,
        required: true,
    },
    author: {
        type: Schema.Types.ObjectId,
        ref: "User"
    },
    likes: [{
            type: Schema.Types.ObjectId,
            ref: "Like"
        }]
});


module.exports = mongoose.model('Tweet', tweets);

我正在根据以下数据进行测试

const likes = await Like.find().populate("author", "_id name email").populate("tweet", "_id content").exec()
res.json(likes)
[
    {
        "_id": "63921e53deb31c60249901e4",
        "liked": true,
        "tweet": {
            "_id": "63921e50deb31c60249901e1",
            "content": "tweet 1"
        },
        "author": {
            "_id": "63921e2ddeb31c60249901dd",
            "name": "Dave",
            "email": "something@gmail.com"
        },
        "createdAt": "2022-12-08T17:26:43.650Z",
        "updatedAt": "2022-12-08T17:26:43.650Z",
        "__v": 0
    }
]

这就是我使用 populate 方法获取推文点赞的方式。

const tweets = await Tweet.find()
    .populate("author", "_id name email")
    .populate("likes", "_id")
    .sort({updatedAt: "desc"})
    .exec()

res.status(200).json(tweets)

但我在 likes 集合(对象)中得到一个空数组。

[
    {
        "_id": "63921e50deb31c60249901e1",
        "content": "tweet 1",
        "author": {
            "_id": "63921e2ddeb31c60249901dd",
            "name": "Dave",
            "email": "something@gmail.com"
        },
        "likes": [],
        "createdAt": "2022-12-08T17:26:40.659Z",
        "updatedAt": "2022-12-08T17:26:40.659Z",
        "__v": 0
    }
]

关注了这个documentation

【问题讨论】:

    标签: node.js express mongoose


    【解决方案1】:

    据我了解,您想填充嵌套对象

    猫鼬填充语法是:

    populate({ path: 'refKey'}).
    

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 2020-09-10
      • 2019-08-07
      • 1970-01-01
      相关资源
      最近更新 更多