撇号附件和撇号文件之间的区别?

时间:2017-03-28 21:37:25

标签: apostrophe-cms

附件和文件模块之间的主要区别是什么?每个模块都有特定的用例吗?可以同时应用权限吗?我对这个平台非常陌生,所以试着快速掌握撇号如何完成任务的方法和原因。

1 个答案:

答案 0 :(得分:0)

我是P' unk Avenue的Apostrophe的建筑师。

这些模块完全不是替代品。实际上,apostrophe-filesapostrophe-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。在_idname属性和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-filesapostrophe-imagesapostrophe-attachments可以执行哪些操作的详细信息,请参阅文档。本教程中有很多示例,尤其是apostrophe-images-widgets。希望这个答案让您了解如何以及何时直接使用attachment字段。

希望这有用!