supportBigNumbers
: When dealing with big numbers (BIGINT and DECIMAL columns) in the database, you should enable this option (Default: false).
커넥션 옵션으로 dateStrings
를 true로 두고 아래 코드(DOCS에 있음) 사용
var CURRENT_TIMESTAMP = { toSqlString: function() { return 'CURRENT_TIMESTAMP()'; } };
var sql = mysql.format('UPDATE posts SET modified = ? WHERE id = ?', [CURRENT_TIMESTAMP, 42]);
console.log(sql); // UPDATE posts SET modified = CURRENT_TIMESTAMP() WHERE id = 4
문자열로 구하고 싶으면 아래 방법을 사용하자
https://stackoverflow.com/questions/5129624/convert-js-date-time-to-mysql-datetime
아래는 DOCS에 나와있는 transactio 코드이다.
connection.beginTransaction(function(err) {
if (err) { throw err; }
connection.query('INSERT INTO posts SET title=?', title, function (error, results, fields) {
if (error) {
return connection.rollback(function() {
throw error;
});
}
var log = 'Post ' + results.insertId + ' added';
connection.query('INSERT INTO log SET data=?', log, function (error, results, fields) {
if (error) {
return connection.rollback(function() {
throw error;
});
}
connection.commit(function(err) {
if (err) {
return connection.rollback(function() {
throw err;
});
}
console.log('success!');
});
});
});
});
async/awiat
으로 바꾸면 다음과 같을 것이다.(사수님의 도움을 받았다 ^^)
async function foo() {
try {
await asyncBeginTransaction(dbConnection)
await asyncQuery(dbConnection,'INSERT INTO posts SET title=${title}')
let log = 'Post ' + results.insertId + ' added';
await asyncQuery(dbConnection, 'INSERT INTO log SET data=${log}')
dbConnection.commit()
console.log('success!')
} catch (err) {
dbConnection.rollback()
throw err
}
}
async function asyncBeginTransaction(dbConnection) {
return new Promise((resolve, reject) => {
dbConnection.beginTransaction(error => {
if (error) reject(error)
resolve()
})
})
}
async function asyncQuery(dbConnection, query) {
return new Promise((resolve, reject) => {
dbConnection.query(query, (error, results, fields) => {
if (error) {
reject(error)
}
resolve(results)
})
})
}
query
connection.sql()
의 results
결과는 다음과 같다. value 컬럼값에 접근하려면 results[0].value
라고 접근하면 된다.
connection.sql()
의 fields
결과는 다음과 같다. 어따 써야할지 아직은 모르겠다.