sqlite3 - 插入 - javascript 对象作为值

tom*_*ole 2 javascript sqlite insert

使用 javascript 对象作为 sqlite3 插入的值的最简单的解决方案是什么?下面的代码不起作用。

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');
  }
});
Run Code Online (Sandbox Code Playgroud)

Sto*_*ica 5

首先你需要正确编写SQL。要插入到列中name, age, language,您需要像这样编写 SQL:

INSERT INTO tablename (name, age, language) VALUES (?, ?, ?)
Run Code Online (Sandbox Code Playgroud)

并将 3 列的值作为参数传递。

db.run('INSERT INTO tablename (name, age, language) VALUES (?, ?, ?)', [values['name'], values['age'], values['language']]), (err) => { ... });
Run Code Online (Sandbox Code Playgroud)

或者,如果 JavaScript 对象中的属性名称直接对应于列名称,那么您可以动态生成正确的 SQL 字符串以获得更大的灵活性:

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) => { ... });
Run Code Online (Sandbox Code Playgroud)