Keystonejs Tutorials #3/Seeding data

다음 페이지 htps : // 코 m / 혼텐 스즈키 / ms / 7cd598 아 7075f6c970f14

Seeding data



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

이 가이드에서는 createItems 메서드를 사용하여 사용자 목록을 만들고 이에 초기 데이터를 추가하는 방법을 보여 줍니다. 이 프로세스는 Seeding이라고도 합니다.

참고: 이전 장에서는 코드를 별도의 파일로 분할했지만 실제 코드 기반에서는 이를 권장하지만 이 부분에서는 명확성을 위해 모든 파일을 하나의 파일에 넣습니다.

목록 설정



패키지 설치



이 장에서는 이전 장과 다른 사용자 스키마를 사용하고, Todo 목록 대신 게시 목록을 사용합니다. 새 프로젝트로 시작하고 빈 데이터베이스로 시작하는 것이 좋습니다 (이전 장의 데이터 삭제). 또한 다음 패키지가 모두 설치되어 있는지 확인하십시오.

mkdir new-project3
cd new-project3
yarn init

yarn add @keystonejs/keystone
yarn add @keystonejs/adapter-mongoose
yarn add @keystonejs/app-graphql
yarn add @keystonejs/fields
yarn add @keystonejs/app-admin-ui
yarn add @keystonejs/auth-password


준비



먼저 사용자 목록을 만들고 PasswordAuthStrategy를 추가합니다.
index.js 코드 :

const { Keystone } = require('@keystonejs/keystone');
const { PasswordAuthStrategy } = require('@keystonejs/auth-password');
const { Text, Checkbox, Password } = require('@keystonejs/fields');
const { GraphQLApp } = require('@keystonejs/app-graphql');
const { AdminUIApp } = require('@keystonejs/app-admin-ui');
const { MongooseAdapter } = require('@keystonejs/adapter-mongoose');

const keystone = new Keystone({
  name: 'example-project',
  adapter: new MongooseAdapter(),
});

keystone.createList('User', {
  fields: {
    name: { type: Text },
    email: {
      type: Text,
      isUnique: true,
    },
    isAdmin: { type: Checkbox },
    password: {
      type: Password,
    },
  },
});

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

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

팁: Keystone CLI를 실행하여 keystone-app를 만들고 Starter(User+Authorization)를 선택하면 비슷한 설정을 할 수 있습니다. 이 스타터 프로젝트에는 사용자 목록, PasswordAuthStrategy 및 구성된 데이터베이스 시드가 있습니다. 우선, 수동으로 진행합니다.

회원 등록



mutation {
  createUser(data: { name: "Mike" ,email:"[email protected]", password:"test1234",isAdmin:true}) {
    name
  }
}


회원을 등록할 수 있는지 확인해 봅시다.

query {
  allUsers {
    id,name
  }
}

출력

{
  "data": {
    "allUsers": [
      {
        "id": "5eae81ad78af33930bac2700",
        "name": "Mike"
      }
    ]
  }
}

adminUI에서 확인
Keystone Admin UI : http://localhost:3000/admin





등록이 확인되었습니다.

아이템 만들기



createItems 메서드에는 키가 목록 키이고 값이 삽입되는 항목의 배열인 개체가 필요합니다. 예:

keystone.createItems({
  User: [
    { name: 'John Duck', email: '[email protected]', password: 'dolphins' },
    { name: 'Barry', email: '[email protected]', password: 'dolphins' },
  ],
});

참고: 데이터 형식은 keystone.createList()에 대한 호출의 스키마 설정과 일치해야 합니다. 스키마의 예로 전자 메일 필드에는 isUnique:true가 포함되어 있으므로 위 코드에서는 생성해야 하는 각 사용자에 대해 동일한 전자 메일을 사용할 수 없습니다.

데이터베이스 연결 시 데이터를 시드하는 방법의 예:

const keystone = new Keystone({
  name: 'New Project',
  adapter: new MongooseAdapter(),
  onConnect: async keystone => {
    await keystone.createItems({
      User: [
        { name: 'John Duck', email: '[email protected]', password: 'dolphins' },
        { name: 'Barry', email: '[email protected]', password: 'dolphins' },
      ],
    });
  },
});


애플리케이션을 시작하고 관리 UI에 액세스합니다. 시작 시 두 명의 사용자가 사용할 수 있습니다.

참고: 이 예에서는 시작할 때마다 동일한 두 명의 사용자가 생성됩니다. 메일은 고유해야 하므로 중복 오류가 표시됩니다. 이를 방지하려면 Keystone을 시작하기 전에 데이터베이스를 지우십시오.

다음 페이지 htps : // 코 m / 혼텐 스즈키 / ms / 7cd598 아 7075f6c970f14

좋은 웹페이지 즐겨찾기