1

我的目标是通过使用JSON Schema 验证来提高 MongoDB 数据库中的数据质量。我们在我们的项目中使用打字稿,并为我们所有的集合提供接口。

所以我基本上是在寻找一种有效的方法;

转换此接口

import { ObjectId } from 'mongodb';

export interface Category {
  _id: ObjectId;
  date: Date;
  level: string | null;
}

进入这个 JSON 模式

export const CategoryJSONSchema = {
  required: ['_id', 'date', 'level'],
  additionalProperties: false,
  properties: {
    _id: { bsonType: 'objectId' },
    date: { bsonType: 'date' },
    level: { oneOf: [{ bsonType: 'null' }, { bsonType: 'string' }] }
  }
}
4

2 回答 2

0

您需要一个自定义 ts-transformer 来生成 json 模式。

这是一个ts-transformer-keys示例

import { keys } from 'ts-transformer-keys';

interface Props {
  id: string;
  name: string;
  age: number;
}
const keysOfProps = keys<Props>();

console.log(keysOfProps); // ['id', 'name', 'age']

我会分叉包,对其进行调整,以便它也公开字段类型。然后有了类型信息,就很容易生成json或者model。类似于 Prisma.io 所做的。

还有ts-transformer-enumerate

于 2021-10-07T11:06:02.970 回答
0

你考虑过使用mongoose吗?您可以强制您的架构符合接口。例如:

const CategorySchema = new mongoose.Schema<CategoryInterface>({ ... });
于 2021-10-04T16:19:58.503 回答