2015-08-18 2 views
1

Я использую NodeJS с Express, MongoDB, Mongoose и GridFS для загрузки и извлечения файлов.MongoDB - Заполнение метаданных файлов GridFS в родительском документе

Я хотел бы ссылаться на файлы в других документах по идентификатору и заполнять метаданные файлов при запросе других документов.

Например: Если у меня есть коллекция "пользователи" с документами, как это ...

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

... Я хочу сделать somethig как это ...

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

. .., который должен предоставить мне доступ к метаданным файлов - например, имя файла ...

user.image.filename 

Любые идеи?

ответ

1

Вы можете определить схему для сбора метаданных 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) {...}) 
+0

Аха ... 'строги: false' делает трюк. Отлично. Благодаря! – Simon