pg-promise格式默认 - 不存在属性为null

时间:2017-12-30 21:31:22

标签: javascript pg-promise

我希望能够将formatting.formatValue函数转换为undefined为null。

但似乎没有办法可以从pg-promise的initOptions设置默认函数,因为pgFormatting是一个布尔值,格式值需要它作为参数。但是该库似乎没有通过它进行正常查询。

vitaly-t写道

  

但是我不确定它会添加多少价值,因为您无法访问查询方法中的格式化选项。

这是事实。但我只想为格式化为查询的所有缺失值设置默认值null。部分不是我不使用它?

使用coalesce在某些查询中包含“可选”值,默认情况下不设置变量。

示例:

UPDATE sometable SET value = COALESCE(${value}, value)

如何停止获取“属性不存在错误?

我认为我需要一种方法将值传递给此选项,以便对格式进行所有调用。

if ('default' in options) {
    const d = options.default, value = typeof d === 'function' ? d.call(obj, v.name, obj) : d;
    return formatValue(value, v.fm, obj);
}

导致创建options.default的相关问题。 https://github.com/vitaly-t/pg-promise/issues/173

我无法覆盖格式值函数,因为它被添加为不可配置的只读属性。

我是否只需要咬住子弹并将变量放在任何地方,我希望它们是可选的......

1 个答案:

答案 0 :(得分:0)

  

我只想为格式化为查询的所有缺失值设置默认值null ...

如果您想手动设置查询格式,请使用以下格式化功能:

function format(query, values) {
    return pgp.as.format(query, values, {'default': null});
}

对于helpers命名空间中自动生成的查询,您可以根据Column API提供属性def的值。

除此之外,查询方法自己使用format函数,所以你不能覆盖它,如果你正确使用库的API,你也不应该,通常不需要它,即如果你能给我一个你认为你需要它的具体例子,那么我可以告诉你更好的方法,避免它。

另一种方法 - 方法helpers.concat可以使用格式化选项,因为它实现了加入查询的特定情况。