在 Postgraphile 中为 table 保留尾随 's'
Retain trailing 's' for table in Postgraphile
有没有办法禁用 Postgraphile 中的 'remove-the-plural-s' 功能?
我的数据库中有一个 table OS
,我正在使用非常棒的 Postgraphile 库免费创建一个 GraphQL 界面。一切都很好,但是 Postgraphile 截断了我的 table 名字,认为它是复数形式。所以我得到 allOs
而不是 allOses
和 createO
、updateO
等...
我试过了:
- 在 table 名称后添加下划线,然后它只保留带有下划线的整个内容。
- 加下划线(
O_S
)复数加大写allOS
但单数是O_
- A smart comment 指定
E'@name os'
但它仍然删除 s
- 一个聪明的评论指定
E'@name oss'
然后正确复数 allOsses
(哈哈)并保留单数 oss
PS 如果你看到这个 Benjie/other 贡献者,你的文档非常棒,图书馆会节省我几个月的工作时间。
此更改由 PostGraphile 的变形器执行;然而它并不总是正确的(例如在这种情况下)但幸运的是可以用一个小插件覆盖它。
在这种情况下,最好为 pluralize
和 singularize
函数添加特定的例外;您可以使用 makeAddInflectorsPlugin from our inflection system 执行此操作。请务必将 true
作为第二个参数传递,以便系统知道您是故意覆盖变形器。
const { makeAddInflectorsPlugin } = require('graphile-utils');
module.exports = makeAddInflectorsPlugin(oldInflectors => ({
pluralize(str) {
if (str.match(/^os$/i)) {
return str + 'ses';
}
return oldInflectors.pluralize(str);
},
singularize(str) {
if (str.match(/^osses$/i) {
return str.substr(0, 2);
}
return oldInflectors.singularize(str);
}
}), true);
很高兴您喜欢 PostGraphile
有没有办法禁用 Postgraphile 中的 'remove-the-plural-s' 功能?
我的数据库中有一个 table OS
,我正在使用非常棒的 Postgraphile 库免费创建一个 GraphQL 界面。一切都很好,但是 Postgraphile 截断了我的 table 名字,认为它是复数形式。所以我得到 allOs
而不是 allOses
和 createO
、updateO
等...
我试过了:
- 在 table 名称后添加下划线,然后它只保留带有下划线的整个内容。
- 加下划线(
O_S
)复数加大写allOS
但单数是O_
- A smart comment 指定
E'@name os'
但它仍然删除s
- 一个聪明的评论指定
E'@name oss'
然后正确复数allOsses
(哈哈)并保留单数oss
PS 如果你看到这个 Benjie/other 贡献者,你的文档非常棒,图书馆会节省我几个月的工作时间。
此更改由 PostGraphile 的变形器执行;然而它并不总是正确的(例如在这种情况下)但幸运的是可以用一个小插件覆盖它。
在这种情况下,最好为 pluralize
和 singularize
函数添加特定的例外;您可以使用 makeAddInflectorsPlugin from our inflection system 执行此操作。请务必将 true
作为第二个参数传递,以便系统知道您是故意覆盖变形器。
const { makeAddInflectorsPlugin } = require('graphile-utils');
module.exports = makeAddInflectorsPlugin(oldInflectors => ({
pluralize(str) {
if (str.match(/^os$/i)) {
return str + 'ses';
}
return oldInflectors.pluralize(str);
},
singularize(str) {
if (str.match(/^osses$/i) {
return str.substr(0, 2);
}
return oldInflectors.singularize(str);
}
}), true);
很高兴您喜欢 PostGraphile