You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RxDB中配置AJV插件以解决‘encrypted’关键字错误?

在RxDB中配置AJV验证插件以支持"encrypted"关键字

问题场景

添加RxDB的AJV验证插件后出现以下错误:

Uncaught Error: strict mode: unknown keyword: "encrypted"

尽管你的Schema中未显式使用encrypted关键字,但RxDB内部会为加密字段自动注入该关键字,而默认的AJV严格模式会拦截未知关键字。

解决方案

RxDB的AJV验证插件支持通过配置项自定义AJV实例或调整其行为,有两种常用方式:

方式1:传入自定义AJV实例

直接创建已配置好的AJV实例,添加encrypted关键字后传入插件:

import { RxDBAjvValidatePlugin } from 'rxdb/plugins/ajv-validate';
import Ajv from 'ajv';

// 创建AJV实例并添加"encrypted"关键字
const customAjv = new Ajv();
customAjv.addKeyword('encrypted');

// 添加插件时传入自定义实例
addRxPlugin(RxDBAjvValidatePlugin, {
    ajv: customAjv
});

方式2:通过插件配置调整AJV

利用插件的afterAjvCreation钩子完成关键字添加,或通过ajvOptions调整AJV模式:

import { RxDBAjvValidatePlugin } from 'rxdb/plugins/ajv-validate';

addRxPlugin(RxDBAjvValidatePlugin, {
    // 可选:关闭AJV严格模式(不推荐,建议显式添加关键字)
    // ajvOptions: { strict: false },
    
    // 推荐:在AJV实例创建后添加"encrypted"关键字
    afterAjvCreation: (ajvInstance) => {
        ajvInstance.addKeyword('encrypted');
    }
});

说明

afterAjvCreation钩子会在RxDB创建AJV实例后触发,适合添加自定义关键字或修改实例配置;若选择关闭严格模式,需注意可能会忽略其他未知关键字的潜在问题,显式添加关键字是更安全的做法。

内容的提问来源于stack exchange,提问作者Ilya Loskutov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:36:29