Keystonejs Tutorials #6/Creating relationships3

이전 페이지 htps : // 코 m / 혼텐 스즈키 / ms / 7f306f0d6 베d05 아 dc891
다음 페이지 htps : // 코 m / 혼텐 스즈키 / ms / 8f91 3f0128b6 11cb

Keystonejs의 tutorials에서 배웁니다. (거의 기계 번역입니다)
htps //w w. 케 ys와 네 js. 코 m / 쓰리 아 ls / 레 치온시 ps

다 대다 관계(To-many relationship)



사용자가 여러 작업을 수행할 수 있어야 하는 경우에는 어떻게 됩니까? Keystone은 이것을 쉽게 할 수있는 방법을 제공합니다. User.js의 다음 코드를 살펴보십시오.

/lists/User.js

tasks: {
  type: Relationship,
  ref: 'Todo.assignee',
  many: true,
}

many:true 옵션은 사용자가 작업에 대한 여러 참조를 저장할 수 있음을 나타냅니다.

/lists/Todo.js

assignee: {
  type: Relationship,
-  ref: 'User.task',
+  ref: 'User.tasks',
}

참고: 필드의 이름을 task에서 tasks로 업데이트하여 관계의 특성을 표시했습니다.



두 개의 task를 등록 할 수있었습니다.

index.js
const { Keystone } = require('@keystonejs/keystone');
const { MongooseAdapter } = require('@keystonejs/adapter-mongoose');
const { PasswordAuthStrategy } = require('@keystonejs/auth-password');
const { GraphQLApp } = require('@keystonejs/app-graphql');
const { AdminUIApp } = require('@keystonejs/app-admin-ui');
const { Text, CalendarDay, Checkbox , Password} = require('@keystonejs/fields');
const TodoSchema = require('./lists/Todo.js');
const UserSchema = require('./lists/User.js');


const keystone = new Keystone({
  name: 'New Project 3',
  adapter: new MongooseAdapter(),
});

keystone.createList('Todo', TodoSchema);
keystone.createList('User', UserSchema);

const authStrategy = keystone.createAuthStrategy({
  type: PasswordAuthStrategy,
  list: 'User',
});

module.exports = {
  keystone,
  apps: [new GraphQLApp(),new AdminUIApp({ enableDefaultRoute: true, authStrategy })],

};


lists/Todo.js
const { CalendarDay, Checkbox, Relationship, Text } = require('@keystonejs/fields');

module.exports = {
  fields: {
    // existing fields
    description: {
      type: Text,
      isRequired: true,
    },
    isComplete: {
      type: Checkbox,
      defaultValue: false,
    },
    // added fields
    deadline: {
      type: CalendarDay,
      format: 'Do MMMM YYYY',
      yearRangeFrom: '2019',
      yearRangeTo: '2029',
      isRequired: false,
      defaultValue: new Date().toISOString('YYYY-MM-DD').substring(0, 10),
    },
    assignee: {
    type: Relationship,
    ref: 'User.tasks',
    isRequired: true,
    },
  },
};


lists/User.js
const { Text, Password ,Checkbox,Relationship} = require('@keystonejs/fields');

module.exports = {
  fields: {
    username: {
      type: Text,
      isRequired: true,
    },
    email: {
      type: Text,
      isUnique: true,
    },
    isAdmin: { 
      type: Checkbox
    },
    password: {
      type: Password,
      isRequired: true,
    },
    tasks: {
      type: Relationship,
      ref: 'Todo.assignee',
      many: true,
      },
    },
};


이전 페이지 htps : // 코 m / 혼텐 스즈키 / ms / 7f306f0d6 베d05 아 dc891
다음 페이지 htps : // 코 m / 혼텐 스즈키 / ms / 8f91 3f0128b6 11cb

좋은 웹페이지 즐겨찾기