다중 행 삽입에 ColumnSet 및 helper.insert 함수를 사용하고 있습니다.pg-promise ColumnSet def 속성이있는 Postgres 함수 사용
Postgres Date/Time now() 기능을 사용하려는 테이블 열이 있습니다.
const cs = new helpers.ColumnSet([
'lastname',
{
name: 'rental_date',
def: 'now()'
}
], { table: { table: 'book_rental', schema: 'public' } })
let rentals = [
{
lastname: 'Mueller'
},
{
lastname: 'Johnson'
}
]
let insert = helpers.insert(rentals, cs)
db.result(insert)
.then(data => res.json({ message: 'Ok!' }))
.catch(err => res.json({ message: 'Not ok!' }))
그것은 def: 'now()'
를 사용하여 작동하는 것 같군,하지만 난 그것을 올바른 방법으로 사용하고 있는지 확인하려면. 주석의 대답에 대해서는
:
편집. 삽입을 수동으로 시도했는데 Postgres가 'now()'
문자열을 now()
함수로 변환하는 것처럼 보입니다.
INSERT INTO book_rental (lastname, rental_date) VALUES ('Mueller', 'now()');
답변을 포함하려면 올바른 코드 여야합니까?
const cs = new helpers.ColumnSet([
'lastname',
{
name: 'rental_date',
mod: ':raw',
def: 'now()'
}
], { table: { table: 'book_rental', schema: 'public' } })
는'것 같다 더 구체적 일 수 있습니까? 이스케이프 처리 된 텍스트 문자열이 아닌 원시 텍스트 문자열을 사용해야하므로 작동하지 않는 것처럼 보입니다. –
죄송합니다. 위의 코드를 사용하고 삽입 후 데이터베이스를 확인하면'rental_date '가'timestamptz'로 올바르게 저장됩니다. 그것이 내가 작동하고 있다고 생각한 이유입니다. – abergavenny
'def'는 속성이없는 경우에만 사용됩니다. 누락되지 않은 경우 열 값이 대신 사용되므로 작동하지 않을 수 있습니다. 확신하고 싶다면 대신'init'을 사용해야합니다. –