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

时间:2015-08-18 13:00:50

标签: node.js mongodb mongoose 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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以为GridFS元数据集合定义架构,并在用户架构中引用它:

//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) {...})