一张参考图
说明
从上图我们可以方便的看出schmea 能做的事情
- Generate a GraphQL equivalent of your schema to control your GraphQL API.(生成 graphql api)
- Control permissions for accessing and modifying data.(访问控制)
- Generate forms on the client.(client 以及表单生成)
- Validate form contents on submission.(数据校验)
- Auto-generate paginated, searchable datatables.(自动生成分页,查询)
- Auto-generate smart cards for displaying individual documents.(智能卡生成)
- Add callbacks on document insert or edit.(数据添加,编辑时候的回掉)
参考例子
- schema
类似graphql-yogo 以及graphql-js 的schema 定义
const schema = { ?// default properties ?_id: { ???type: String, ???optional: true, ???canRead: ["guests"] ?}, ?createdAt: { ???type: Date, ???optional: true, ???canRead: ["guests"], ???onCreate: ({ newDocument, currentUser }) => { ?????return new Date(); ???} ?}, ?userId: { ???type: String, ???optional: true, ???canRead: ["guests"], ???resolveAs: { ?????fieldName: "user", ?????type: "User", ?????resolver: (movie, args, context) => { ???????return context.Users.findOne( ?????????{ _id: movie.userId }, ?????????{ ???????????fields: context.Users.getViewableFields( ?????????????context.currentUser, ?????????????context.Users ???????????) ?????????} ???????); ?????}, ?????addOriginalField: true ???} ?}, ?// custom properties ?name: { ???label: "Name", ???type: String, ???optional: true, ???canRead: ["guests"], ???canCreate: ["members"], ???canUpdate: ["members"] ?}, ?year: { ???label: "Year", ???type: String, ???optional: true, ???canRead: ["guests"], ???canCreate: ["members"], ???canUpdate: ["members"] ?}, ?review: { ???label: "Review", ???type: String, ???optional: true, ???control: "textarea", ???canRead: ["guests"], ???canCreate: ["members"], ???canUpdate: ["members"] ?}};
- 创建collection
实际上上就是graphql api schema 定义以及解析处理
const Movies = createCollection({ ?typeName: "Movie", ?schema, ?resolvers, ?mutations});
参考资料
http://docs.vulcanjs.org/schemas.html
vulcanjs schemas&& collections
原文地址:https://www.cnblogs.com/rongfengliang/p/9575786.html