javascript - 撇号 : Pulling in custom global settings into beforeConstruct for piece module (blog)

标签 javascript mongodb apostrophe-cms

我正在尝试引入我在具有数组字段类型的适当区域中创建的自定义全局设置。

我想将全局设置拉入博客模块以构建一个字段以添加到博客类型。我尝试使用教程文档中描述的撇号模型层和 mongo 数据库集合,但看起来它们需要一些 req 交互或 self.method 才能正确触发,我认为在 beforeConstruct 函数中不可用。

// This would ideally be a data.global.arrayField
var optionArraySet = ['Item 1', 'Item 2', 'Item 3'];
var formattedArraySet = [];
for (var type in optionArraySet) {
  formattedArraySet.push({
    label: optionArraySet[type],
    value: optionArraySet[type]
  })
}
options.addFields = [
  {
    label: 'Custom Array Field',
    name: 'customArrayField',
    type: 'select',
    choices: formattedArraySet
  }
].concat(options.addFields || [])

因此 optionArraySet 理想情况下是包含我要访问的数据数组的全局设置。

对于上下文,这个全局设置将应用于几个不同的区域,如果我们想更改值,我不必在后端更新代码,我可以只向全局设置中的数组集添加新值并让前端页面在适当的部分更新其显示和设置字段。

如果这有帮助,我基本上是在尝试控制内容编辑器可以在特定作品类型上选择的标签,以便他们无法输入不需要的标签。

construct: function(self, options) {
 self.beforeSave = function(req, piece, options, callback) {
  var newTags = [];

  newTags.push(piece.anotherFieldValue);

  var customArrayField = piece.customArrayField;

  for (var option in customArrayField) {
    newTags.push(customArrayField[option]);
  }

  piece.tags = newTags;
  return callback();
 };
}

谢谢

最佳答案

由于可以随时编辑全局设置,并且 beforeConstruct 仅在站点启动时执行,因此在那里读取全局设置并不是很有用。

有多种方法可以在运行时修补架构,但有一个更简单的解决方案:

  1. 创建一个新的片段类型模块,“special-tags”。将 name 设置为 special-tag

  2. 使用名为 _specialTagsjoinByArray 架构字段加入 withType: 'special-tag'

现在,用户在编辑架构中包含此连接的文档时只能从特殊标签列表中进行选择,管理员可以像任何其他片段类型一样通过管理栏编辑特殊标签。连接随文档加载,因此您可以访问,例如,._specialTags 并查找具有包含标签名称的 title 属性的文档数组。

有关joinByArray的更多信息,请参阅:

http://apostrophecms.org/docs/tutorials/getting-started/schema-guide.html#code-join-by-array-code

以及一般的架构指南。

关于javascript - 撇号 : Pulling in custom global settings into beforeConstruct for piece module (blog),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48389182/

相关文章:

mysql - 对于像 Wufoo 这样的应用程序,使用关系数据库还是基于文档的数据库更好?

javascript - 带有空格的 Axios GET 请求参数

node.js - 如何更新 Mongoose 模型嵌套数组中的数字

mongodb - ChicagoBoss 似乎没有将正确的值保存到 MongoDB 中

javascript - 如何在 apostropecms 中重构客户端 js

javascript - apostrope-blog - 如何实现下一个/上一个。浏览 show.html 中的文章?

node.js - 将 Bootstrap 和 Logo png 添加到 Apostrope CMS

javascript - 如何从 Web Worker 访问 chrome.history?

javascript - 克隆 div 和在循环中创建的 div 之间有什么区别吗?

javascript - 将 JSON 数据保存到文本文件并读取