如何定义类型为Types.S3File数组的字段。基本上我想要实现的是在S3中存储图像数组。我搜索了Keystone数据库文档,他们已经给出了如何将类型定义为S3文件。考虑一个真实的场景,比如有一个用户,他有多个图像,或者有一个博客,它包含多个图像,我怎么能用keystone做到这一点?谢谢。任何帮助将不胜感激。
答案 0 :(得分:0)
不幸的是,S3File类型无法实现这一点。
虽然Array字段确实存在,但它们目前仅支持Number和String文字。这些字段的主站点文档尚未更新,但看起来它正在处理中。以下是NumberArray和TextArray的WIP文档。
您还可以使用变通方法创建对象数组。如果创建一个新数组,并将数组作为唯一字段,则可以在该数组内创建嵌套模式。不幸的是,如果您尝试在数组旁指定任何其他字段,则会生成错误。我已成功使用此技术为我正在处理的电子商务网站创建支持购物车。 Cart模式如下所示:
var Cart = new keystone.List('Cart');
Cart.schema.add( {
items: [{
itemID: String,
quantity: Number
}]
});
然后,您可以在另一个模型中使用Relationship Field来引用购物车模型(在我的情况下,是用户模型)。
此方法的缺点是此购物车模型在管理界面中无法编辑。这对我来说不是问题,因为购物车是由中间件更新的,而不是由用户更新的。如果您希望人们能够上传自己的图片,我不确定这会对您的用例有效,但这可能是潜在解决方案的起点。
此外,我不确定您是否注意到,但是有CloudinaryImages字段类型支持多个图像。当然,这需要您使用Cloudinary,但它们确实有免费等级。
希望您找到适合您需求的解决方法,虽然这是一个令人沮丧的限制,但我发现Keystone是一个很棒的平台。