我在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页面是空的,在文章列表中我可以看到所有文章,但是当我尝试编辑一次时,我的错误是“该项目不存在。”
任何解决方案?
答案 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属性。