猫鼬填充不填充引用对象数组

时间:2021-03-09 16:34:17

标签: node.js mongodb express mongoose mongoose-populate

我有两个模式 - UserSiteUser 具有对 Site 的引用数组。我试图返回 Site 的数组,但由于某种原因,它返回仅包含 ObjectIds 的数组。

用户架构

const UserSchema = new mongoose.Schema({
sites: [{ site: { type: mongoose.Schema.Types.ObjectId, ref: 'Site' },
          siteRole: { type: Number } } 
       ]})
module.exports = mongoose.model('User', UserSchema)

站点架构

const SiteSchema = new mongoose.Schema({
     name: { type: String },
     url: { type: String }
})
module.exports = mongoose.model('Site', SiteSchema)

我尝试了两种方法,但都返回相同的输出,即返回站点 ObjectIds 数组而不是填充版本

 // 1st try
const user = await User.findById(id)
     .populate({
            path: 'sites',
            model: 'Site',
            populate: { path: 'site', model: 'Site' }
        }).exec()

// 2nd try
const user = await User.findById(id)
    .populate('sites.site')
   .exec(function (err, site) {
            if (err) return next(err)
            if (!site) return res.json(401)
                return res.json(site)
    })

两种方式都返回(站点 ID 数组而不是站点):

[
    {
        "_id": "60476bf103016cef60b63319",
        "siteRole": 11
    }
]

0 个答案:

没有答案