2016-11-14 6 views
3

유무 어레이 인 DB에 삽입하십시오. 반환 [PG-약속 lib에] formatting.js에 기능 (편곡) :는 열 <columnName> 타입 jsonb이다하지만 표현 형식 텍스트 아래와 같이]

{ [error: column "foodpref" is of type jsonb but expression is of type text[]] 
name: 'error', 
length: 196, 
severity: 'ERROR', 
code: '42804', 
detail: undefined, 
hint: 'You will need to rewrite or cast the expression.', 
position: '123', 
internalPosition: undefined, 
internalQuery: undefined, 
where: undefined, 
schema: undefined, 
table: undefined, 
column: undefined, 
dataType: undefined, 
constraint: undefined, 
file: 'parse_target.c', 
line: '529', 
routine: 'transformAssignedExpr' } 
POST /api/member 500 638.510 ms - 57 

내가 배열 왜냐하면 그것의 드라이버 문제를 생각 :

PG-약속 라이브러리를 통해
db.one('insert into foodies(FoodieName, FoodPref,country,languagePref)' + 
'values(${FoodieName}, $[FoodPref], ${country} ,${languagePref}) RETURNING FoodieId',req.body) 

** PG DB 오류가 발생합니다 문자열과 포스트그레스는 그것을 소화 할 수 없다. 배열이 객체에 중첩되어 있으면 원활하게 작동합니다.

"MyPref" : {Same Object array as above} 

여기에서 MyPref는 "FoodPref"열에 아무런 문제없이 도달합니다. 배열이 모든 개체에 중첩되어있는 경우

+0

실행중인 정확한 쿼리를 첨부해야합니다. 실행하지 않고 쿼리를 얻으려면 [pgp.as.format] (http://vitaly-t.github.io/pg-promise/formatting.html#.format) 메서드를 사용하십시오. –

+0

질의 메소드에 전달하는 것이 아닌'pgp.as.format'을 사용하여 생성 된 질의로 질의를 업데이트 할 것을 요청했습니다. –

+0

미안 : (쿼리를 얻을 수 없습니다 ... 샘플 코드 및 위치 생성 된 쿼리를 얻으려면 도와주세요 .one 메서드에서 응답을 시도한 buts 동일한 쿼리를 반환합니다. 질문에 넣었습니다. –

답변

0

그런 다음 그것은 정확하게 데이터를 포맷 전달되지 않는다는 점 원활

작동합니다. JSONB에 대한 데이터를 배열로 전달하는 대신 내부 객체 배열을 전달합니다.

개체 속성으로 전달하면 그냥 말한대로 작동합니다.

query('bla-bla $1', data) 

이를 잘못 해석하는 : 문제, 즉

var data = [{"FoodType":"veg","pref":"High"} 
,{"FoodType":"sea food","pref":"Medium"} 
,{"FoodType":"Chicken","pref":"Low"}] 

query('bla-bla $1', [data]) 

당신이로 그것을 전달하는 것입니다 : 배열 내부 매개 변수로 전달하려면 배열 내부 에 전달해야 array - JSONB 데이터를 값 배열로 저장합니다.

+0

req.body를 직접 전달하지 않고 각 열마다 별도의 객체를 만들지 만합니까? (삽입 된 쿼리의 업데이트 된 질문을 확인하십시오.) –

+0

죄송합니다 늦은 답장 ... req.body 대신 매개 변수로 개별 개체를 전달하여 해결 .... .... 또한 JSON의 배열을 가지고 json.stringify에 변수를 전달했습니다. –