Я использую squel
для создания запроса PostgresSQL и sequelize
для обеспечения соединения с базой данных и выполнения запроса.
const Sequelize = require('sequelize');
const squel = require('squel').useFlavour('postgres')
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/config/config.json')[env];
let sequelize = new Sequelize(config.database, config.username, config.password, config);
const payload = {
myId: 'foobar',
timestamp: Date.now()
}
// Build the SQL query
let q = squel.insert()
.into('animals')
.setFields(payload)
.toString();
console.log(q)
// Execute the SQL query
sequelize
.query(q, { type: Sequelize.QueryTypes.INSERT })
.catch(e => console.log(e))
Однако выполнение приведенного выше кода дает ошибка:
DatabaseError [SequelizeDatabaseError]: столбец "myid" отношения "animals" не существует
Сгенерированный оператор SQL
INSERT INTO animals (myId, timestamp) VALUES ('foobar', 1578360166225)
Кажется, что добавление кавычек для изменения имен столбцов, таких как myId
в "myId"
, будет работать. Если это правильно, почему Squel. js не форматирует оператор SQL таким образом?