有没有办法禁用Postgraphile中的'remove-the-plural-s'功能?
我的数据库中有一个表OS
,并且正在使用非常强大的Postgraphile库免费创建GraphQL接口。一切都很好,但是Postgraphile删节了我的表名,认为它是复数。所以我得到allOs
而不是allOses
和createO
,updateO
等...
我尝试过:
O_S
),然后复数具有大写字母allOS
,但单数形式为O_
E'@name os'
,但它仍然删除了s
E'@name oss'
的智能注释,然后正确地将allOsses
复数(哈哈),并将两者都保留为单数oss
请注意,如果您看到这个Benjie /其他撰稿人,您的文档太不可思议了,图书馆将为我节省数月的工作。
答案 0 :(得分:1)
此变化是由PostGraphile的偏转器进行;但是它并不总是正确(例如,在这种情况下),但幸运的是有可能用小插件来覆盖它。
在这种情况下,最好向pluralize
和singularize
函数添加特定的例外;您可以使用我们的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