首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoose .populate()不填充

Mongoose .populate()不填充
EN

Stack Overflow用户
提问于 2019-03-01 00:03:01
回答 1查看 62关注 0票数 1

我有两个模式的RoleUser。当我执行Role.find()时,我想用具有该特定角色的用户填充users

代码语言:javascript
复制
let roleSchema = new Schema({
  name: {
    type: String,
    required: true,
  },
  ...,
  users: [{
    type: mongoose.Schema.ObjectId,
    ref: 'User'
  }]
}, {
  timestamps: true,
});

const Role = mongoose.model('Role', roleSchema);
代码语言:javascript
复制
let userSchema = new Schema({
  username: {
    type: String,
    required: true,
  },
  ...,
  role: {
    type: mongoose.Schema.ObjectId,
    ref: 'Role'
  },
}, {
    timestamps: true,
  }
);

const User = mongoose.model('User', userSchema);

当我使用以下代码获取Role时:

代码语言:javascript
复制
Role.findById(req.params.roleId)
  .populate('users')
  .then(role => {
    res.send(role);
  }).catch(err => {
    res.send(err)
});

它返回以下内容:

代码语言:javascript
复制
{  
   "users": [  

   ],
   "_id":"5c78006df35ca926534ad865",
   "name":"Role",
   "createdAt":"2019-02-28T15:38:21.741Z",
   "updatedAt":"2019-02-28T15:38:21.741Z",
   "__v":0
}

User.find().populate('role')可以很好地工作,但Role.find().populate('users')不能。

在这种情况下,是我做错了什么,还是我不需要.populate()

EN

回答 1

Stack Overflow用户

发布于 2019-03-01 01:00:28

不要紧。我想我必须一直使用aggregate().lookup()来完成这个任务。因为Role.users里没有任何in ..。

代码语言:javascript
复制
Role.aggregate()
  .lookup({
    from: 'users',
    localField: '_id',
    foreignField: 'role',
    as: 'users'
  }).then( role => {
    res.send(role);
  });

这给了我想要的响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54929741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档