Keystone JS,字段为s3对象的数组

时间:2017-08-01 12:43:29

标签: amazon-s3 keystonejs

如何定义类型为Types.S3File数组的字段。基本上我想要实现的是在S3中存储图像数组。我搜索了Keystone数据库文档,他们已经给出了如何将类型定义为S3文件。考虑一个真实的场景,比如有一个用户,他有多个图像,或者有一个博客,它包含多个图像,我怎么能用keystone做到这一点?谢谢。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

不幸的是,S3File类型无法实现这一点。

虽然Array字段确实存在,但它们目前仅支持Number和String文字。这些字段的主站点文档尚未更新,但看起来它正在处理中。以下是NumberArrayTextArray的WIP文档。

您还可以使用变通方法创建对象数组。如果创建一个新数组,并将数组作为唯一字段,则可以在该数组内创建嵌套模式。不幸的是,如果您尝试在数组旁指定任何其他字段,则会生成错误。我已成功使用此技术为我正在处理的电子商务网站创建支持购物车。 Cart模式如下所示:

var Cart = new keystone.List('Cart');

Cart.schema.add( {
  items: [{
    itemID: String,
    quantity: Number
  }]
});

然后,您可以在另一个模型中使用Relationship Field来引用购物车模型(在我的情况下,是用户模型)。

此方法的缺点是此购物车模型在管理界面中无法编辑。这对我来说不是问题,因为购物车是由中间件更新的,而不是由用户更新的。如果您希望人们能够上传自己的图片,我不确定这会对您的用例有效,但这可能是潜在解决方案的起点。

此外,我不确定您是否注意到,但是有CloudinaryImages字段类型支持多个图像。当然,这需要您使用Cloudinary,但它们确实有免费等级。

希望您找到适合您需求的解决方法,虽然这是一个令人沮丧的限制,但我发现Keystone是一个很棒的平台。