2016-09-14 4 views
3

텍스트에 "$ (...)"문자열이 포함되어있을 때 데이터베이스에 텍스트를 삽입하는 데 문제가 있습니다 내 코드가 Error : Property '...' 존재하지 않습니다.

const pgp = require('pg-promise')({ promiseLib: bluebird }); 
const db = pgp(process.env.DATABASE_URL); 
let values = [{text: 'this is fine'}, {text: 'this fails $(...)'}]; 
let cs = new pgp.helpers.ColumnSet(['text']); 
let query = pgp.helpers.insert(values, cs); 
db.manyOrNone(query); 

"이 텍스트는"속성 중 일부가 누락 되었습니까?

덕분에 전체 SQL 호출에 다른 변수를 추가 할() 구문 $를 사용하는 경우 오류 만 발생했다

편집

'use strict'; 
const bluebird = require('bluebird'); 
const pgp = require('pg-promise')({ promiseLib: bluebird }); 
const db = pgp('postgres://localhost/okeydokey-local'); 

db.any(
    'CREATE TABLE text_table (' + 
    'text_column text ' + 
    ')' 
); 
let values = [{ text_column: 'this is fine' }, { text_column: 'this fails $(test)' }]; 
let cs = new pgp.helpers.ColumnSet(['text_column'], {table: 'text_table'}); 
let query = pgp.helpers.insert(values, cs); 
console.log(query); 
db.manyOrNone(query + 
    'some more SQL dependent on $(somethingElse)', 
    { 
    somethingElse: 'someValue' 
    } 
); 

출력

insert into "text_table"("text_column") values('this is fine'),('this fails $(test)') 
Unhandled rejection Error: Property 'test' doesn't exist. 
+0

정확히 어떤 라인/작업이 실패했는지 자세히 알려주십시오. 또한 생성 된 쿼리와 전체 코드 (예 : 쿼리를 생성 할 때 테이블을 지정하지 않으므로 예제의 코드는 작동하지 않습니다)를 제공하십시오. –

답변

2

다음 줄은 생성 최종 검색어 :

let query = pgp.helpers.insert(values, cs); 
//=>insert into "text_table"("text_column") values('this is fine'),('this fails $(test)') 

추가 서식 지정을위한 쿼리 템플릿이 아니므로 직접 실행해야합니다.

코드에서 서식 지정 개체에 test 속성을 찾으려고하는 마지막 쿼리 문자열의 서식을 지정하려고합니다.

+0

도우미를 사용하여 '와 같은 삽입 쿼리를 생성 할 수 있습니까?'('이 (가)'괜찮습니다. ')'text_table "("text_column ") 값에 삽입하십시오 ('이 작업을 실패합니다 $ (테스트)') 충돌 할 경우 업데이트 세트 ... 현재 내 업데이트 문이 $ (변수) –

+0

@ Nathsn Evant를 사용하여 변수를 입력하는 것과 비슷한 일을하고 싶으므로 생성 된 쿼리 문자열에 'ON CONFLICT'부분을 추가하십시오. –

+0

@ NathanEvans 어떤 이유로 형식을 지정해야하는 문자열을 수정하려는 경우'pgp.as.format() '처럼 별도로 생성해야합니다. 생성 된 최종 쿼리에 변수를 주입하려고하면 안됩니다. 이미 변수처럼 보이는 문자열을 이미 포함하고있을 수 있기 때문에 문자열 값으로 무엇이 있을지 모를 방법이 없습니다. –

관련 문제