📅  最后修改于: 2023-12-03 14:50:32.943000             🧑  作者: Mango
反对.js 是一款使用 TypeScript 编写的 Node.js ORM(对象关系映射)。它可以让你通过编写 JavaScript 代码来操作关系型数据库。反对.js 支持 MySQL、PostgreSQL、SQLite、Microsoft SQL Server 等数据库。
反对.js 特点如下:
你可以使用 npm 进行安装:
npm install objection --save
在使用反对.js 之前,你需要先连接到数据库。下面是一个连接到 MySQL 数据库的示例:
import { Model } from 'objection';
import Knex from 'knex';
const knex = Knex({
client: 'mysql2',
connection: {
host: '127.0.0.1',
user: 'your_database_user',
password: 'your_database_password',
database: 'myapp_test'
}
});
Model.knex(knex);
创建模型是使用反对.js 的第一步。模型是对应数据库表的映射,通过模型你可以对数据库进行增删改查等操作。
import { Model } from 'objection';
class Person extends Model {
static get tableName() {
return 'persons';
}
}
async function test() {
const persons = await Person.query();
console.log(persons);
}
这里我们创建了一个名为 Person 的模型,并指定它对应数据库中的 persons 表。我们通过调用静态方法 Person.query
来执行查询操作。
反对.js 提供丰富的查询 API,让你可以非常方便地查询数据。
// 查询所有数据
const persons = await Person.query();
// 查询指定 ID 的数据
const person = await Person.query().findById(1);
// 查询名字为 Alice 的数据
const persons = await Person.query().where('name', 'Alice');
// 查询名字为 Alice 或 Bob 的数据
const persons = await Person.query().where('name', 'Alice').orWhere('name', 'Bob');
// 查询名字以 A 开头的数据
const persons = await Person.query().where('name', 'like', 'A%');
使用 insert
方法可以新增数据。
const person = await Person.query().insert({
name: 'Alice',
age: 20
});
使用 update
方法可以更新数据。
await Person.query().findById(1).update({
name: 'Alice',
age: 21
});
使用 delete
方法可以删除数据。
await Person.query().delete().where('id', 1);
反对.js 提供了鲁棒性的数据验证,让你可以轻松验证数据是否符合要求。
import { Model } from 'objection';
import Joi from 'joi';
class Person extends Model {
static get tableName() {
return 'persons';
}
static get jsonSchema() {
return Joi.object({
name: Joi.string().required(),
age: Joi.number().integer().min(0).max(100)
});
}
}
const person = await Person.query().insert({
name: 'Alice',
age: 20,
email: 'alice@example.com'
}); // 这里会抛出异常,因为 email 不在模型定义中
反对.js 是一款优秀的 Node.js ORM,提供了方便的 API 和强大的验证功能。如果你需要对数据库进行操作,反对.js 绝对是一个值得推荐的选择。