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

我正在使用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 

有任何想法吗?

您可以为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) {...})