Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express mongoose不带ref填充ObjectId的通用数组_Express_Mongoose_Mongoose Schema_Mongoose Populate - Fatal编程技术网

Express mongoose不带ref填充ObjectId的通用数组

Express mongoose不带ref填充ObjectId的通用数组,express,mongoose,mongoose-schema,mongoose-populate,Express,Mongoose,Mongoose Schema,Mongoose Populate,我用的是猫鼬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 ob

我用的是猫鼬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_列表数组时,它总是空的。 我在mongo中查看过,用户都很满,但mongoose返回的是空的

passport.deserializeUser(function(id, done) {
  User.findById(id)
    .populate('rol_list')
    .exec(function(err, user) {
      console.log(user);
      done(err, user);
    });
});
console.loguser始终将数组rol_列表显示为空

如果我为ObjectId指定了一个引用,则如下所示:

rol_list: [{ type: Schema.Types.ObjectId, ref: 'Rol1' }]
than正确填充,逻辑上仅使用元素Rol1

有什么想法吗?

中有一个选项。填充。。。mongoose函数,允许您指定ObjectId后面的模型

@范例


如果只需要对象ID的数组,则不要使用填充

比如:


rol_列表后面的模式名称是什么?不,不,后面没有模式。我想要一个通用的对象数组。
Conversation.find().populate('creator', null, 'User2').exec(callback);
passport.deserializeUser(function(id, done) {
  User.findById(id)
    .exec(function(err, user) {
      console.log(user);
      done(err, user);
    });
});