gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:48:57 26 4
gpt4 key购买 nike

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

我想将全局设置拉入博客模块以构建一个字段以添加到博客类型。我尝试使用教程文档中描述的撇号模型层和 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com