保留邮编中表尾的“ s”

时间:2019-02-02 14:50:36

标签: postgraphile

有没有办法禁用Postgraphile中的'remove-the-plural-s'功能?

我的数据库中有一个表OS,并且正在使用非常强大的Postgraphile库免费创建GraphQL接口。一切都很好,但是Postgraphile删节了我的表名,认为它是复数。所以我得到allOs而不是allOsescreateOupdateO等...

我尝试过:

  • 在表名后面添加一个下划线,然后只保留整个内容并带有下划线。
  • 添加下划线(O_S),然后复数具有大写字母allOS,但单数形式为O_
  • 一个smart comment指定了E'@name os',但它仍然删除了s
  • 指定E'@name oss'的智能注释,然后正确地将allOsses复数(哈哈),并将两者都保留为单数oss

请注意,如果您看到这个Benjie /其他撰稿人,您的文档太不可思议了,图书馆将为我节省数月的工作。

1 个答案:

答案 0 :(得分:1)

此变化是由PostGraphile的偏转器进行;但是它并不总是正确(例如,在这种情况下),但幸运的是有可能用小插件来覆盖它。

在这种情况下,最好向pluralizesingularize函数添加特定的例外;您可以使用我们的makeAddInflectorsPlugin中的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