代码之家  ›  专栏  ›  技术社区  ›  Simon

MongoDB-在父文档中填充GridFS文件元数据

  •  2
  • Simon  · 技术社区  · 9 年前

    我将NodeJS与Express、MongoDB、Mongoose和GridFS一起用于上传和检索文件。

    我希望通过ID引用其他文档中的文件,并在查询其他文档时填充文件元数据。

    例如:如果我有一个“用户”集合,其中包含这样的文档。。。

    {
       _id:   ObjectId("554dfeb59e78d9081af2404f"),
       name:  "John Doe",
       image: ObjectId("55b61ae329c44b483665bafc")
    }
    

    …我想做一些像这样的事。。。

    User.findById(req.params.id)
      .populate('image')
      .exec(function(err, user) {...})
    

    …这应该允许我访问文件元数据-例如文件名。。。

    user.image.filename
    

    有什么想法吗?

    1 回复  |  直到 9 年前
        1
  •  3
  •   hassansin    9 年前

    您可以定义GridFS元数据集合的模式,并在User模式中引用它:

    //define Model for metadata collection.
    var GFS = mongoose.model("GFS", new Schema({}, {strict: false}), "fs.files" );
    
    var UserSchema = Schema({
        image: {type: Schema.Types.Object, ref: 'GFS' } // refer the model
    });
    
    var User = mongoose.model('User', UserSchema);
    
    User.findById(req.params.id)
      .populate('image') //populate 
      .exec(function(err, user) {...})