Skip to content

查询 ​

Query 方法可链式调用,字段名和值会根据 Model Schema 检查。

条件 ​

typescript
User.where({
  id: { $gte: 10 },
  name: { $like: 'A%' },
});
操作符含义
$eq、===等于
$neq、!==不等于
$gt、>大于
$gte、>=大于等于
$lt、<小于
$lte、<=小于等于
$in位于值数组中
$between位于两个值之间
$likeSQL LIKE
$andAND 组合
$orOR 组合
typescript
User.where({
  $or: [{ name: 'Alice' }, { name: 'Bob' }],
  active: true,
});

MySQL Adapter 将值作为绑定参数传递;排序字符串、索引名和原始表达式属于 SQL 结构,只能来自可信应用代码。

排序、字段和限制 ​

typescript
User.orderBy({ id: 'desc', name: 'asc' });
User.order('id DESC');
User.fields(['id', 'name']);
User.limit(20);
User.limit(40, 20);
User.limit([40, 20]);
User.limit('40,20');

数值排序方向使用 1 表示升序,-1 表示降序。field() 是 fields() 的别名。

索引与连接 ​

typescript
User.index('idx_users_name');
User.conn(connection);

index() 设置 Adapter 特定的强制索引;conn() 将 Query 绑定到已有连接,通常用于事务。

返回形式 ​

typescript
await User.find();
await User.find({ noCache: true });
await User.find({ single: true });
await User.find(true, { noCache: true });
await User.findOne(true);

single 返回单个 Yukari 或 null,noCache 仅绕过本次查询的缓存读取,布尔参数控制 JSON 转换。

Query 保存可变状态。复用 Query 会保留之前的条件和设置;需要独立条件时重新从 Model 开始。

Released under the MIT License.