Я пытаюсь создать плагин для rxdb. Я хочу перехватить исключение, вызванное insert
, и вернуть хеш с {[fieldName: string] => [error:string]}
При использовании моего нового метода я получаю исключение, и кажется, что метод вызывается непосредственно впрототип, а не на каждом RxColletion<T, T2, T3>
экземпляре.
Я получаю ошибку:
TypeError: Cannot read property 'fillObjectWithDefaults' of undefined
, что происходит здесь: https://github.com/pubkey/rxdb/blob/ac9fc95b0eda276110f371afca985f949275c3f1/src/rx-collection.ts#L443
, поскольку this.schema
undefined .. Коллекция, на которой я запускаю этот метод, имеет схему, хотя ..
Вот мой код плагина:
export const validatedInsertPlugin: RxPlugin = {
rxdb: true,
prototypes: {
RxCollection(proto: IRxCollectionBaseWithValidatedInsert) {
proto.validatedInsert = async function validatedInsert<T, D>(
doc: T
): Promise<Insert<T>> {
try {
// this is the line that raises:
const product = await proto.insert(doc);
return [true, product];
} catch (e) {
// extract errors
return [false, {} as Errors<T>];
}
};
},
},
overwritable: {},
hooks: {},
};