【问题标题】:mongoose populate generic array of ObjectId without ref猫鼬填充没有引用的 ObjectId 的通用数组
【发布时间】:2017-03-23 00:50:43
【问题描述】:

我正在使用猫鼬 4.6.6,快递 4.13,护照 0.3。

我有下一个猫鼬模式

var userSchema = new Schema({
  nombre: String,
  apellidos: String,
  email: String,
  pass: String,
  fecha_registro : { type: Date, default: Date.now },
  rol_list: [Schema.Types.ObjectId], // generic array of objectId
  deleted: {type: Boolean, default: false}
});

module.exports = mongoose.model('User', userSchema);

当我搜索用户并尝试填充“rol_list”数组时,它始终为空。 我在 mongo 中查看了用户已填满,但 mongoose 将其返回为空。

passport.deserializeUser(function(id, done) {
  User.findById(id)
    .populate('rol_list')
    .exec(function(err, user) {
      console.log(user);
      done(err, user);
    });
});

console.log(user) 总是显示数组 rol_list 为空。

如果我分配对 ObjectId 的引用,例如:

rol_list: [{ type: Schema.Types.ObjectId, ref: 'Rol1' }]

than 是正确填充的,逻辑上只有元素“Rol1”。

有什么想法吗?

【问题讨论】:

  • rol_list 后面的架构名称是什么?
  • 不,后面没有架构。我想要一个通用的对象数组。

标签: express mongoose mongoose-schema mongoose-populate


【解决方案1】:

.populate(...) mongoose 函数中有一个选项,允许您指定 ObjectId 后面的模型。

@example

Conversation.find().populate('creator', null, 'User2').exec(callback);

Stack overflow post: mongoose-populate-field-without-ref-option

【讨论】:

    【解决方案2】:

    如果您想要仅包含对象 ID 的数组,则不要使用填充它。

    喜欢:

    passport.deserializeUser(function(id, done) {
      User.findById(id)
        .exec(function(err, user) {
          console.log(user);
          done(err, user);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 2014-04-19
      • 1970-01-01
      • 2019-02-24
      • 2015-07-13
      • 2020-11-19
      • 1970-01-01
      • 2020-08-15
      • 2014-11-25
      相关资源
      最近更新 更多