Inserting Rows Into a Table from Node.js

摘要:在本教程中,您将学习如何从 Node.js 应用程序向表中插入一行或多行。

要将新行插入表中,请执行以下步骤:

  1. 连接到 MySQL 数据库。
  2. 通过调用connection对象上的query()方法来执行INSERT语句。
  3. 关闭数据库连接。

请注意,我们将重用包含 MySQL 数据库信息的 config.js 模块。

如果您还没有遵循上一个教程,这里是 config.js 模块:

let config = {
  host    : 'localhost',
  user    : 'root',
  password: '',
  database: 'todoapp'
};

module.exports = config;
Code language: JavaScript (javascript)

在表中插入一行

以下 insert.js 程序将新行插入到todos表中:

let mysql  = require('mysql');
let config = require('./config.js');
let connection = mysql.createConnection(config);

// insert statment
let sql = `INSERT INTO todos(title,completed)
           VALUES('Learn how to insert a new row',true)`;

// execute the insert statment
connection.query(sql);

connection.end();
Code language: JavaScript (javascript)

让我们执行 insert.js 程序。

> node insert.js
Code language: JavaScript (javascript)

并检查todos表中的数据:

mysql> select * from todos;
+----+-------------------------------+-----------+
| id | title                         | completed |
+----+-------------------------------+-----------+
|  1 | Learn how to insert a new row |         1 |
+----+-------------------------------+-----------+
1 row in set (0.00 sec)
Code language: JavaScript (javascript)

正如您所看到的,程序在todos表中插入了一个新行。

插入一行并返回插入的id

以下 insert2.js 程序将新行插入todos表并返回插入的 id。

let mysql = require('mysql');
let config = require('./config.js');
let connection = mysql.createConnection(config);

let stmt = `INSERT INTO todos(title,completed)
            VALUES(?,?)`;
let todo = ['Insert a new row with placeholders', false];

// execute the insert statment
connection.query(stmt, todo, (err, results, fields) => {
  if (err) {
    return console.error(err.message);
  }
  // get inserted id
  console.log('Todo Id:' + results.insertId);
});

connection.end();
Code language: JavaScript (javascript)

要将数据传递到 SQL 语句,请使用问号 (?) 作为占位符。

在此示例中,我们分别使用两个问号 (?,?) 表示titlecompleted字段。

执行查询后,我们可以从结果对象的insertId属性中获取插入的id。

>node insert2.js
Todo Id:2
Code language: JavaScript (javascript)

一次插入多行

以下 insert3.js 程序将多行插入到todos表中:

let mysql = require('mysql');
let config = require('./config.js');

let connection = mysql.createConnection(config);

// insert statment
let stmt = `INSERT INTO todos(title,completed)  VALUES ?  `;
let todos = [
  ['Insert multiple rows at a time', false],
  ['It should work perfectly', true]
];

// execute the insert statment
connection.query(stmt, [todos], (err, results, fields) => {
  if (err) {
    return console.error(err.message);
  }
  // get inserted rows
  console.log('Row inserted:' + results.affectedRows);
});

// close the database connection
connection.end();
Code language: JavaScript (javascript)

请注意,我们在INSERT语句中仅使用一个问号 (?),并且多行数据是一个数组的数组。

您可以通过结果对象的affectedRows属性访问插入的行数。

>node insert3.js
Row inserted:2
Code language: JavaScript (javascript)

如结果所示,插入了两行,这正是我们所期望的。

在本教程中,您学习了如何从 Node.js 程序向表中插入一行或多行。

本教程有帮助吗?