我将 Amazon S3 存储适配器与 CollectionFS 一起使用。
通常,您不能将方法存储到 MongoDB 中。例如,我不能将文档存储在我的CustomerOrders
集合中,并在其上使用直接使用折扣代码修改文档的方法。
CustomerOrders.findOne().addDiscountCode('SAVE50PERCENT')
但是使用 CollectionFS 和 S3 存储适配器,我可以运行一个remove
函数来从我的图像集合中删除一个项目,以及从我的 Amazon S3 存储桶中删除它:
Images.findOne().remove(function(error, success){
console.log(success)
});
语法的相似性让我印象深刻。它基本上是在说:
- 进入图像集合
- 找到一个随机文档
- 将其作为对象返回
- 运行该
.remove()
对象上的方法
但是,实际上声明集合是不同的。
而不是执行以下操作来创建我的Images
收藏,
Images = new Mongo.Collection('images');
我要做:
Images = new FS.Collection("images", {
stores: [storeName],
filter: {
allow: {
contentTypes: ['image/*']
}
}
})
我猜是FS.Collection
扩展Mongo.Collection's
findOne()
方法,所以代码可以:
- 进入图像集合
- 找到一个随机文档
- 将其作为对象返回
.remove()
在这个对象上添加一个方法- 返回这个扩展对象
- 运行该
.remove()
对象上的方法
这种方法正确吗?该.remove
方法实际上并未存储在文档本身中。它只是简单地添加到返回的文档对象中findOne()
?