附件和文件模块之间的主要区别是什么?每个模块都有特定的用例吗?可以同时应用权限吗?我对这个平台非常陌生,所以试着快速掌握撇号如何完成任务的方法和原因。
答案 0 :(得分:0)
我是P' unk Avenue的Apostrophe的建筑师。
这些模块完全不是替代品。实际上,apostrophe-files
和apostrophe-images
都建立在apostrophe-attachments
之上。
什么是apostrophe-file
?它是一个""" - 具有标题,一些元数据的撇号文档,在本例中为attachment
字段。由于它是一个部分,就像任何博客文章或活动一样,您可以通过管理栏管理所有文件,您可以使用apostrophe-files-widgets
显示您网站周围的下载链接,等等。
那么attachment
是什么?它是一个架构字段 - 您可以在Apostrophe中的任何类型的文档的架构中包含的一种字段,例如一个部分或页面。
大多数架构字段类型都非常简单。例如,string
字段类型由一个字符串组成。 boolean
字段类型为true或false,依此类推。
但附件有点棘手。在理想的世界中......从数据库设计的角度来看......文件的实际内容将存在于您的文档中; doc.headshot
可能是实际的JPEG数据(或者,可能还有一些元数据)。
但是我们无法做到这一点,因为文件非常大,即使它们适合MongoDB文档(它们并非总是如此),它也会非常非常低效,特别是当我们&#39时;现在对它们不感兴趣。
相反,如果您使用apostrophe-file
在mongo shell中显示它,那么这是MongoDB中典型的findOne
部分的样子。为简单起见,我把它简化了一点。请注意attachment
属性:
{
"_id" : "xyz",
"type" : "apostrophe-file",
"title" : "Field Trip Permission Slip",
"slug" : "file-field-trip-permission-slip",
"attachment" : {
"type" : "attachment",
"_id" : "qqq",
"name" : "permission-form",
"extension" : "pdf"
},
}
attachment
字段有自己的_id
。在_id
,name
属性和extension
属性之间,apos.attachments.url()
方法可以组合一个URL来下载它。
那么这对我们有什么影响?灵活性。想在您的网站上重复使用单个PDF库吗?使用apostrophe-files
,并使用apostrophe-files-widgets
显示网站周围的下载链接。
想要将resume
媒体资源附加到特定人profile
部分,并将其 保留在共享资源库中?在模式中使用attachment
字段代替您的片段类型:
// in lib/modules/people
module.exports = {
extend: 'apostrophe-pieces',
addFields: [
{
type: 'attachment',
name: 'resume'
}
]
}
我们本可以使用小部件来选择一个文件,但我们并不想用数以千计的简历来混淆共享的文件库。所以我们直接添加了一个attachment
属性来重新开始。
因此,在您的模板中,如何获取作为片段一部分的附件的URL?像这样:
apos.attachments.url(data.piece.resume)
有关使用apostrophe-files
,apostrophe-images
和apostrophe-attachments
可以执行哪些操作的详细信息,请参阅文档。本教程中有很多示例,尤其是apostrophe-images-widgets
。希望这个答案让您了解如何以及何时直接使用attachment
字段。
希望这有用!