从Node.js将行插入表

时间:2019-11-20 08:52:40  来源:igfitidea点击:

简介:在本教程中,您将学习如何从node.js应用程序中将一个或多个行插入表中。

要将新行插入表中,请按照下列步骤操作:

  • 连接到MySQL数据库。

  • 通过在连接对象上调用query()方法来执行INSERT语句。

  • 关闭数据库连接。

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

如果您未遵循上一教程,则为config.js模块:

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

module.exports = config;

在表格中插入一行

以下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();

让我们执行insert.js程序。

> node insert.js

并检查todos表中的数据:

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

如您所见,该程序在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();

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

在此示例中,我们分别对标题和完成字段使用两个问号(?,?)。

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

>node insert2.js
Todo Id:2

一次插入多行

以下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();

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

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

>node insert3.js
Row inserted:2

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

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