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