Toshihiko
    正在准备搜索索引...

    接口 Yukari<Name, Schema, AdapterInstance>

    属于一个 Model 的可变数据行。

    schema 字段会作为实例的可枚举属性公开。使用 Model.build 创建新数据行,或从以下方法取得查询结果: Query.find、Query.findOne,或 Query.findById。

    新建的数据行可以插入;查询得到的数据行可以更新或删除。用于定位和比较查询结果的原始值会保存在私有状态中。

    interface Yukari<
        Name extends string,
        Schema extends SchemaDefinition,
        AdapterInstance extends AdapterLike = Adapter,
    > {
        delete(
            connection?: AdapterConnection<AdapterInstance> | null,
        ): Promise<true>;
        insert(
            connection?:
                | Exclude<Parameters<AdapterInstance["insert"]>[1], null>
                | null,
        ): Promise<Yukari<Name, Schema, AdapterInstance>>;
        save(
            connection?:
                | Exclude<Parameters<AdapterInstance["insert"]>[1], null>
                | null,
        ): Promise<Yukari<Name, Schema, AdapterInstance>>;
        toJSON(useOriginalData?: boolean): Partial<JsonRowFromSchema<Schema>>;
        update(
            connection?:
                | Exclude<Parameters<AdapterInstance["insert"]>[1], null>
                | null,
        ): Promise<Yukari<Name, Schema, AdapterInstance>>;
        validateAll(): Promise<void>;
        validateOne<Field extends string>(
            name: Field,
            value: RowFromSchema<Schema>[Field],
        ): Promise<void>;
    }

    类型参数

    索引
    • 删除从数据库加载的数据行。

      删除条件使用原始主键值。如果 Model 没有主键,则用所有原始字段定位。Adapter 最多会被要求返回一行。

      参数

      返回 Promise<true>

      true,在 Adapter 报告删除成功后返回。

      在新建数据行上调用,或 Adapter 返回假值时。

    • 验证并插入由以下方法创建的数据行:Model.build。

      Adapter 返回的值(例如自增主键)会复制到同一个 Yukari 实例上。

      参数

      • connection: Exclude<Parameters<AdapterInstance["insert"]>[1], null> | null = null

        可选的 Adapter 事务连接。

      返回 Promise<Yukari<Name, Schema, AdapterInstance>>

      写操作完成后的当前 Yukari 实例。

      在数据库加载的数据行上调用,或验证、Adapter 执行失败时。

    • 使用每个 Field Type 的以下方法序列化映射字段:toJSON() 实现。

      参数

      • useOriginalData: boolean = false

        序列化数据库原始快照,而不是当前的可枚举属性。

      返回 Partial<JsonRowFromSchema<Schema>>

      以逻辑 schema 字段名为键的普通对象。

      const current = user.toJSON();
      const beforeChanges = user.toJSON(true);
    • 更新从数据库加载的数据行。

      变更字段会与私有原始值快照比较。数据行通过原始主键值定位,因此修改主键属性不会丢失原始定位条件。没有值发生变化时,为兼容 v1 会发送完整映射后的数据行。

      参数

      • connection: Exclude<Parameters<AdapterInstance["insert"]>[1], null> | null = null

        可选的 Adapter 事务连接。

      返回 Promise<Yukari<Name, Schema, AdapterInstance>>

      刷新原始快照后的当前 Yukari 实例。

      在新建数据行上调用,或验证、Adapter 执行失败时。

    • 验证每个映射到 schema 字段的可枚举属性。

      函数、名称以下列内容开头的兼容属性:$;schema 中不存在的属性会被忽略。最多并发验证十个字段。

      返回 Promise<void>

      以下方法产生的第一条验证错误:validateOne。

    • 运行一个 schema 字段的 validator。

      可为 null 的字段接受 null,但不会运行自定义 validator。每个 validator 的 this 都绑定到 this,其 this 绑定到该数据行的 Model。

      类型参数

      • Field extends string

      参数

      返回 Promise<void>

      字段不存在、不可为 null 的字段收到以下值时: null,或 validator 返回非空错误信息。