2017-12-30 15 views
0

formatting.formatValue 함수가 undefined를 null로 변환 할 수 있기를 원합니다.pg-promise 형식 기본값 - 기존 속성 없음 null

하지만 pg-promise에 지정된 initOptions에서 기본 함수를 설정할 수있는 방법이없는 것 같습니다. pgFormatting은 부울 값이므로 형식 값은 인수로 사용하기를 원합니다. 그러나 라이브러리는 일반적인 쿼리를 위해 전달하지 않습니다.

비탈리-t는

을 쓴하지만 쿼리 메소드에서 서식 옵션에 액세스 할 수 없기 때문에 나는 그것이 추가 얼마나 많은 가치 모르겠어요.

사실입니다. 하지만 난 그냥 누락 된 모든 값을 쿼리에 서식이 null에 대한 기본값을 설정하려면 종류. 부분적으로는 사용하지 않는다.

일부 쿼리에서는 coalesce를 사용하여 "선택적"값을 사용하므로 기본값을 설정하지 않으면 어쨌든 변수가 설정됩니다.

예 :

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

나는 "속성이 오류가 존재하지 않는 점점 중지 할 수 있습니다 방법

를 나는 내가 모든 통화에 대해이 옵션에 값을 전달하는 방법이 필요하다고 생각? 형식입니다. options.default의 창출을 주도

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); 
} 

관련 문제를 해결합니다. https://github.com/vitaly-t/pg-promise/issues/173

구성 할 수없는 읽기 전용 속성으로 추가되므로 형식 값 기능을 오버라이드 할 수 없습니다.

답변

0

내가 종류의 단지 누락 된 모든 값을 null의 기본을 설정하려면 ... 난 그냥 총알을 물고 내가 그들는 선택 사양 일하고자하는 모든 곳에서 null가 변수를 넣어해야합니까 ... 쿼리로 포맷 수동으로 쿼리를 포맷 할 경우

다음은 이에 대한 당신의 포맷 함수입니다되는 :

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

helpers 네임 스페이스 내에서 자동으로 생성 된 쿼리의 경우 API에 따라 def 속성 값을 제공합니다.

다른 방법으로는 쿼리 메서드가 자체적으로 format 함수를 사용하므로이를 무시할 수 없으며 라이브러리 API를 올바르게 사용하는 경우 일반적으로 필요하지 않습니다. if 당신이 필요로 생각하는 부분에 대한 구체적인 예를 나에게 줄 수 있습니다. 그런 다음 그것을 피하는 더 나은 접근 방법에 대해 조언 할 수 있습니다.

하나의 다른 접근 방법 - 방법 helpers.concat은 쿼리를 결합하는 특정 사례를 구현하므로 형식 지정 옵션을 사용할 수 있습니다.

+0

유스 케이스는 매개 변수가 값 세트를 가질 수도 있고 가지지 않을 수도있는 질의를위한 것입니다. 여기서 설정 값은 그대로 업데이트되지만 설정되지 않은 값은 COALESCE ($ {value}, value) 사용으로 인해 해당 레코드에있는 현재 값을 사용하려면 null을 전달해야합니다. 좋을 것입니다. 이러한 질의 메소드가 null 동작에 디폴트를 찾을 수 없도록 옵션으로 설정할 수 있어야합니다. 왜 이것이 일반적으로 필요하지 않다고 생각할 수 있습니까? 형식 메서드로 수행 할 수있는 쿼리 메서드가 부족한 것처럼 보입니다. format 메서드를 두 번 호출하는 것은 이상 할 것입니다. –

+0

@LiamMitchell 실제로 [INSERT] 및 [UPDATE] 작업 중 속성이 누락 될 수 있습니다. [helpers] (http://vitaly-t.github.io/pg-promise/helpers) 내에 메서드가 있습니다. .html) 네임 스페이스. 다른 모든 경우에는 실제로 필요하지 않습니다. –