Apostrophe CMS博客模块:“该项目不存在。”

时间:2016-10-05 18:21:37

标签: apostrophe-cms

我在MacOS上安装了ApostropheCMS 2的副本,但我有博客模块的情况。 当我尝试编辑现有的博客文章时,我看到“该项目不存在。”,但我可以在文章列表中看到它。

所以,这是app.js:

'apostrophe-blog': {
  widget: true,
  contextual: true 
},
'apostrophe-blog-pages': {},
'apostrophe-blog-widgets': {},

之前'模块{'我有:

 bundles: [ 'apostrophe-blog' ],

我的撇号博客页面包含:

 {% block main %}
  <div class="main-content">

        {{ apos.area(data.page, 'body', {
        widgets: {
            'apostrophe-blog': {}
        }
        }) }}

  </div>
{% endblock %}

现在:/ blog页面是空的,在文章列表中我可以看到所有文章,但是当我尝试编辑一次时,我的错误是“该项目不存在。”

任何解决方案?

1 个答案:

答案 0 :(得分:0)

所以我对这个问题进行了一些深入研究,它似乎与之前发布的Apostrophe或其中一个依赖项有关(我无法准确确定错误发生的位置)。

以下是我们在3个不同的Apostrophe部署中看到的情景,我们已在隔离的虚拟机中运行。

间歇性地,在不确定的时间之后,撇号博客模块将停止在Mongo中新创建的文档中自动创建publishedAt属性。如果您正在挖掘数据,可以使用以下查询在aposDocs集合中找到它们:

列出所有博客文章

db.getCollection('aposDocs').find({"type": "apostrophe-blog"})

列出所有缺少属性的博客文章

db.getCollection('aposDocs').find({"type": "apostrophe-blog", "publishedAt": {$exists : false}})

如果我们使用以下语句添加回属性,我们可以修复损坏的文章:

db.getCollection('aposDocs').update({"type": "apostrophe-blog", "publishedAt": {$exists : false}}, {$set: {"published": false, "publishedAt": ""}})

您的文章现在应该加载。下一步是再次发生这种情况。我们发现我们的安装已经过时了。您可以运行以下命令以确定是否需要更新:

npm outdated

这将吐出如下报告:

apostrophe         2.1.5  2.10.2  2.10.2  apostrophe

在我们的案例中,撇号已经过时了。然后我们通过以下方式更新:

npm update apostrophe

这将使您的安装保持最新状态。现在测试我们看到已经为DB中的所有新的撇号博客文档正确地自动创建了publishedAt属性。