Keystonejs Tutorials #3/Seeding data
14673 단어 CMS자바스크립트KeystoneJSNode.js
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
Reference
이 문제에 관하여(Keystonejs Tutorials #3/Seeding data), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bontensuzuki/items/670c97af7d0e55bbfe93
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
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 })],
};
mutation {
createUser(data: { name: "Mike" ,email:"[email protected]", password:"test1234",isAdmin:true}) {
name
}
}
query {
allUsers {
id,name
}
}
{
"data": {
"allUsers": [
{
"id": "5eae81ad78af33930bac2700",
"name": "Mike"
}
]
}
}
keystone.createItems({
User: [
{ name: 'John Duck', email: '[email protected]', password: 'dolphins' },
{ name: 'Barry', email: '[email protected]', password: 'dolphins' },
],
});
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' },
],
});
},
});
Reference
이 문제에 관하여(Keystonejs Tutorials #3/Seeding data), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bontensuzuki/items/670c97af7d0e55bbfe93텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)