joinByOne 的标题字段

Title field for joinByOne

我之前使用过 joinByOne 和 joinByMany 架构字段,想知道是否有与数组类型中的 titleField 等效的连接类型。具体来说,我的应用程序中有多个地方使用 joinByOne 来 select 用户(apostrophe-users 类型)的特定页面或片段。如果有一种方法可以在编辑器模式中显示的连接字段中显示一个字段(例如,他们的姓名或电子邮件),那就太好了。目前,唯一的东西是 edit/remove/rearrange 按钮,灰色框中的其余部分没有文本。有没有办法指定一个字段显示在编辑器模式的连接字段中? (下图示例)

谢谢!

首先,我很惊讶您在列表中根本看不到任何标签。这向我表明你有:

(a) 使用projection过滤器去除了很多加入文档的属性,并遗漏了title,或者

(b) 实际上从用户的架构中删除了 title

如果你在做(a),只需将title添加到投影中。它不会以任何显着方式影响速度,实际上只有区域和连接会影响速度。

如果你正在做 (b),你应该添加一个 beforeSave 处理程序来从你喜欢的字段构造 title,即 firstNamelastName。 Apostrophe 期望 title 存在于许多地方的所有类型中,没有理由反对它——您不必让用户编辑它,但您确实需要在 beforeSave 中填充它。您可以 write a migration 为当前缺少该字段的任何现有用户修复此字段,或者重新保存它们。

不过话虽如此,这种情况下也可以直接完成你想要的。只需创建 lib/modules/apostrophe-users/views/chooserChoice.html 并填充它,如下所示:

{% extends "chooserChoiceBase.html" %}

{% block title %}{{ choice.firstName }}{{ choice.lastName}}{% endblock %}

这是一项很棒的技术,因为它允许您做一些更奇特的事情,例如在选择图像时包含图像等。请记住,您可能 运行 进入许多其他地方title 属性 很有意义,您应该始终填充它并将其包含在预测中。