我想知道将图像上传到S3并将图像文档保存为mongodb的正确方法是什么。
到目前为止我实施的逻辑是:一切正常,但我希望能够使用mongodb doc的objectID命名图像,然后上传到S3。
那么如何获取mongoDB图像文档的objectID,然后我就可以使用objectid来命名图像了,某些内容为:linke:03scc8399n39n.png
问题是,直到我在mongodb中保存图像文档,我没有objectId所以这意味着我必须做以下事情: - 在mongodb中保存图像文档 - 找到它 - 通过获取刚刚保存在芒果上的文档并读取其id来获取唯一的objectId - 使用id命名图像 - 使用刚刚上传到S3的图像的网址更新图像文档
这个问题是我必须保存,查找 - 更新,保存mongodb中的文档,而不是仅仅创建对象并将其保存到mongodb ...我想我不会以最好的方式接近它由于我的经验不足。
在S3上存储图像,在mongodb中跟踪它们并使用doc id作为图像名称的更好方法是什么?
由于
答案 0 :(得分:1)
在保存文档之前,您确实拥有_id值。所有驱动程序的工作方式是,在执行保存之前,它们会添加新创建的ObjectID实例并将其分配给文档的“_id”字段。换句话说,如果为保存的文档提供_id值,则保存命令实际上是更新,如果不是,则只是插入新创建的ObjectID实例。
因此,你所要做的就是(伪):
myImageDoc = new ImageDoc();
imageId = new ObjectID();
myImageDoc._id = imageId;
db.images.save(myImageDoc);
myPng = imageId + ".png";
或(因为大多数驱动程序使用_id值设置扩展文档实例):
myImageDoc = new ImageDoc();
db.images.save(myImageDoc);
imageId = myImageDoc._id;
myPng = imageId + ".png";
我不是JavaScript专家,所以你必须酌情将其翻译成该语言。