数据库入门 
AirCode 提供了一套开箱即用的数据库功能,只需使用 aircode.db 即可在云函数中对数据进行存取操作。
学习目标 
- 学会使用 const MyTable = aircode.db.table(tableName)获取表
- 学会使用 await MyTable.save(records)保存记录
- 学会使用 const records = await MyTable.where().find()查询记录
- 学会使用 await MyTable.delete(records)删除记录
使用 save 插入新记录 
调用 save 方法并传入一个对象或一个对象数组,可以插入新记录。
例如我们往 persons 表中插入一条 name 为 'Micheal',age 为 28 的记录:
js
const aircode = require('aircode');
module.exports = async function (params, context) {
  // Use `aircode.db.table` to get a table
  const PersonsTable = aircode.db.table('persons');
  // Use `save` to add a new record
  const result = await PersonsTable.save({
    name: 'Micheal',
    age: 28,
  });
  return {
    result,
  };
}
const aircode = require('aircode');
module.exports = async function (params, context) {
  // Use `aircode.db.table` to get a table
  const PersonsTable = aircode.db.table('persons');
  // Use `save` to add a new record
  const result = await PersonsTable.save({
    name: 'Micheal',
    age: 28,
  });
  return {
    result,
  };
}
点击调试,可以在 Response 区域看到如下结果:
json
{
  "result": {
    "_id": "636cd38ae5d303058101488f",
    "name": "Micheal",
    "age": 28,
    "createdAt": "2022-11-10T10:33:46.424Z",
    "updatedAt": "2022-11-10T10:33:46.424Z"
  }
}
{
  "result": {
    "_id": "636cd38ae5d303058101488f",
    "name": "Micheal",
    "age": 28,
    "createdAt": "2022-11-10T10:33:46.424Z",
    "updatedAt": "2022-11-10T10:33:46.424Z"
  }
}
代表新增记录成功了,其中 _id、createdAt 和 updatedAt 是系统自动生成的字段。
提示
使用 save 插入记录时,不需要提前创建表,若该表不存在则 AirCode 会自动创建。
在控制台下方的 Database 区域中,选中 persons 数据表,也可以看到新增的数据。

使用 find 查询记录 
通过 where 方法传入查询条件后,使用 find 可以获取到所有匹配的记录。
例如我们可以通过将上一步插入的记录查询出来:
js
const aircode = require('aircode');
module.exports = async function (params, context) {
  // Use `aircode.db.table` to get a table
  const PersonsTable = aircode.db.table('persons');
  // Find all the records whose name is Micheal
  const result = await PersonsTable.where({ name: 'Micheal' }).find();
  return {
    result,
  };
}
const aircode = require('aircode');
module.exports = async function (params, context) {
  // Use `aircode.db.table` to get a table
  const PersonsTable = aircode.db.table('persons');
  // Find all the records whose name is Micheal
  const result = await PersonsTable.where({ name: 'Micheal' }).find();
  return {
    result,
  };
}
点击调试,可以在 Response 区域看到如下结果:
json
{
  "result": [
    {
      "_id": "636cd38ae5d303058101488f",
      "name": "Micheal",
      "age": 28,
      "createdAt": "2022-11-10T10:33:46.424Z",
      "updatedAt": "2022-11-10T10:33:46.424Z"
    }
  ]
}
{
  "result": [
    {
      "_id": "636cd38ae5d303058101488f",
      "name": "Micheal",
      "age": 28,
      "createdAt": "2022-11-10T10:33:46.424Z",
      "updatedAt": "2022-11-10T10:33:46.424Z"
    }
  ]
}
提示
除 find 外,也可以使用 findOne 来获取第一条匹配的记录。
修改数据后再使用 save 更新记录 
查询出记录并修改其数据后,再使用 save 就可以完成更新操作。
让我们先查出名为 Micheal 的记录,并增加其年龄后保存更新:
js
const aircode = require('aircode');
module.exports = async function (params, context) {
  // Use `aircode.db.table` to get a table
  const PersonsTable = aircode.db.table('persons');
  // Find the first one whose name is Micheal
  const micheal = await PersonsTable.where({ name: 'Micheal' }).findOne();
  // Add 1 year to his age
  micheal.age += 1;
  // Then save it
  const result = await PersonsTable.save(micheal);
  return {
    result,
  };
}
const aircode = require('aircode');
module.exports = async function (params, context) {
  // Use `aircode.db.table` to get a table
  const PersonsTable = aircode.db.table('persons');
  // Find the first one whose name is Micheal
  const micheal = await PersonsTable.where({ name: 'Micheal' }).findOne();
  // Add 1 year to his age
  micheal.age += 1;
  // Then save it
  const result = await PersonsTable.save(micheal);
  return {
    result,
  };
}
点击调试,可以在 Response 区域看到如下结果:
json
{
  "result": {
    "_id": "636cd38ae5d303058101488f",
    "name": "Micheal",
    "age": 29,
    "createdAt": "2022-11-10T10:33:46.424Z",
    "updatedAt": "2022-11-10T10:36:25.430Z"
  }
}
{
  "result": {
    "_id": "636cd38ae5d303058101488f",
    "name": "Micheal",
    "age": 29,
    "createdAt": "2022-11-10T10:33:46.424Z",
    "updatedAt": "2022-11-10T10:36:25.430Z"
  }
}
代表数据库中的记录已经被更新了。
使用 delete 删除记录 
调用 delete 方法并传入对象,可以将这条记录从数据库删除。
例如,我们将本示例中新增的记录删除:
js
const aircode = require('aircode');
module.exports = async function (params, context) {
  // Use `aircode.db.table` to get a table
  const PersonsTable = aircode.db.table('persons');
  // Find the first one whose name is Micheal
  const micheal = await PersonsTable.where({ name: 'Micheal' }).findOne();
  // Delete it from the table
  const result = await PersonsTable.delete(micheal);
  return {
    result,
  };
}
const aircode = require('aircode');
module.exports = async function (params, context) {
  // Use `aircode.db.table` to get a table
  const PersonsTable = aircode.db.table('persons');
  // Find the first one whose name is Micheal
  const micheal = await PersonsTable.where({ name: 'Micheal' }).findOne();
  // Delete it from the table
  const result = await PersonsTable.delete(micheal);
  return {
    result,
  };
}
点击调试,可以在 Response 区域看到如下结果:
json
{
  "result": {
    "deletedCount": 1
  }
}
{
  "result": {
    "deletedCount": 1
  }
}
接下来 
恭喜你已经学会在 AirCode 中使用数据库的基本方式,如果想了解更多和数据库相关的使用方法,可查看数据库概览。