What is the easiest solution to use a javascript object as values for a sqlite3 insert? The following code does not work.
const values = {
name: 'John',
age: 34,
language: 'english'
};
db.run('INSERT INTO tablename VALUES (?)', values, (err) => {
if (err) {
console.log(err);
} else {
console.log('success');
}
});
Advertisement
Answer
First of all you need to write the SQL correctly.
To insert into the columns name, age, language,
you need to write the SQL like this:
INSERT INTO tablename (name, age, language) VALUES (?, ?, ?)
And pass the values of the 3 columns as parameters.
db.run('INSERT INTO tablename (name, age, language) VALUES (?, ?, ?)', [values['name'], values['age'], values['language']]), (err) => { ... });
Or if the property names in the JavaScript object correspond directly to the column names, then you can generate the correct SQL string dynamically to have more flexibility:
const cols = Object.keys(values).join(", ");
const placeholders = Object.keys(values).fill('?').join(", ");
db.run('INSERT INTO tablename (' + cols + ') VALUES (' + placeholders + ')', Object.values(values)), (err) => { ... });