MongoDB - 在父文档中填充 GridFS 文件元数据
MongoDB - Populate GridFS files metadata in parent document
我将 NodeJS 与 Express、MongoDB、Mongoose 和 GridFS 一起用于上传和检索文件。
我想通过 ID 引用其他文档中的文件,并在查询其他文档时填充文件元数据。
例如:如果我有一个集合 "users" 包含这样的文档...
{
_id: ObjectId("554dfeb59e78d9081af2404f"),
name: "John Doe",
image: ObjectId("55b61ae329c44b483665bafc")
}
...我想做这样的事情...
User.findById(req.params.id)
.populate('image')
.exec(function(err, user) {...})
...这应该让我可以访问文件元数据 - 例如文件名...
user.image.filename
有什么想法吗?
您可以为 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) {...})
我将 NodeJS 与 Express、MongoDB、Mongoose 和 GridFS 一起用于上传和检索文件。
我想通过 ID 引用其他文档中的文件,并在查询其他文档时填充文件元数据。
例如:如果我有一个集合 "users" 包含这样的文档...
{
_id: ObjectId("554dfeb59e78d9081af2404f"),
name: "John Doe",
image: ObjectId("55b61ae329c44b483665bafc")
}
...我想做这样的事情...
User.findById(req.params.id)
.populate('image')
.exec(function(err, user) {...})
...这应该让我可以访问文件元数据 - 例如文件名...
user.image.filename
有什么想法吗?
您可以为 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) {...})