ORM과 같은 sequelize의 도움말 없이 PostgreSQL 영구화 노드 API를 사용합니다.
15364 단어 postgresnodetutorialjavascript
MongoDB를 사용하여 데이터를 영구화하는 다른 NodeJS 강좌와 달리 PostgreSQL을 사용합니다.또한 NodeJs와 PostgreSQL을 사용하여 Restful API를 개발하는 데 대한 기초 지식을 확보하기 위해 ORM(대상 관계 매핑) 사용을 피하고 자세한 내용을 읽으십시오.👉 here .
선행 조건:
아래에서 찾을 수 있어요.👇
NodeJs 및 ES6가 포함된 간단한 Restful Api
존슨 오구루・ 2018년 9월 28일・ 6분 읽기
#node
#javascript
#tutorial
pgAdmin
을 검색하고 시작하여 PostgreSQL과 함께 설치합니다.pgAdmin은 PostgreSQL의 GUI 관리 및 개발 플랫폼입니다(이것은 우리의 데이터베이스 관리를 더욱 간단하고 우호적으로 하는 데 도움이 된다는 것을 의미합니다)이 강좌에서 클래스 등록표에 API를 만들고 데이터베이스를 만들고 설정합니다.
다음 지침에 따라 pgAdmin을 사용하여 데이터베이스를 만듭니다.
1. Double click on the PostgreSQL server
.2. Right-lick on Login Roles, assuming you have none and select new login role
.3. Type your preferred Role name, mine is school_reg
.4. Move to the next tab *Definition* and set your password for this role, mine is school_reg
.5. Click on *OK* to save
.6. Right-click on Databases and select New Database
.7. Type Database name in the space for Name, mine is school_register
.8. Select owner of Database, here we would select the login role or user we created, remember mine is school_reg
.9. Click *OK* to save
.위의 그림에서는 다음과 같은 프로세스를 보여 줍니다.
데이터베이스를 만든 후에 우리는 테이블과 테이블 관계를 만들어야 한다. 이상한 말로 말하자면 모델을 만들어야 한다.현재, 우리는 단지 하나의 표만 가지고 있다. 우리의 표
student
는 학생에 대한 기본 정보를 포함할 것이다. 응용 프로그램이 증가함에 따라, 만약 우리가 확장을 선택한다면, 우리는 더 많은 표를 만들어야 한다.항목 설정:
AwesomeNodepostgres
라고 명명합니다. 그렇습니다. 이것은 매우 길다는 것을 알고 있습니다. 당신은 비교적 짧은 이름을 자유롭게 선택할 수 있습니다.npm init
하여 프로젝트를 노드 프로젝트로 초기화합니다.만약 당신이 아직 이렇게 하지 않았다면, 이 점을 어떻게 하는지 이해하기 위해 이전 강좌를 참고하십시오.이제 응용 프로그램을 작성하는 데 필요한 패키지를 설치하겠습니다.본 강좌에서 우리는 다음과 같은 노드 패키지가 필요하다.
npm install express pg --save
npm install nodemon --save-dev
--save-dev
개발 과정에서 nodemon을 개발 의존항으로 저장하고 사용하기 때문에 생산 과정에서 nodemon을 사용하지 않는다는 뜻이다.이제 데이터베이스 연결을 만들기 위해 폴더
services
를 만들고 이 폴더 db.js
라는 파일을 만들 것입니다.services/db.js
내에 다음 코드를 입력합니다.const pg = require('pg');
const config = {
user: 'school_reg', //this is the db user credential
database: 'school_register',
password: 'school_reg',
port: 5432,
max: 10, // max number of clients in the pool
idleTimeoutMillis: 30000,
};
const pool = new pg.Pool(config);
pool.on('connect', () => {
console.log('connected to the Database');
});
현재 우리의 표를 만들려면 이전 코드 블록에 다음 코드를 입력하십시오.const createTables = () => {
const schoolTable = `CREATE TABLE IF NOT EXISTS
students(
id SERIAL PRIMARY KEY,
student_name VARCHAR(128) NOT NULL,
student_age INT NOT NULL,
student_class VARCHAR(128) NOT NULL,
parent_contact VARCHAR(128) NOT NULL,
admission_date VARCHAR(128) NOT NULL
)`;
pool.query(schoolTable)
.then((res) => {
console.log(res);
pool.end();
})
.catch((err) => {
console.log(err);
pool.end();
});
};
이 스크립트로 우리의 테이블을 만들기 위해서, 명령줄에서 이 코드를 실행하는 방법을 찾아야 합니다.우리는 make-runnable
라는 다른 패키지를 사용하여 이 패키지를 설치할 수 있다.npm install make-runnable --save
, 설치 후 페이지 밑에 있는 코드 라이브러리로 돌아가 다음 내용을 추가합니다.pool.on('remove', () => {
console.log('client removed');
process.exit(0);
});
//export pool and createTables to be accessible from an where within the application
module.exports = {
createTables,
pool,
};
require('make-runnable');
현재, 프로그램을 만들기 위해서, 명령줄에서 실행될 때, 테이블을 만들 스크립트를 package.json
파일에 작성합니다.package.json
파일에서 대상 스크립트를 찾아 다음 코드로 대상 내부의 내용을 대체합니다."create": "node ./services/db createTables"
프로젝트 디렉터리에서 명령줄로 이동하여 실행합니다.npm run create
다음 그림은 이 동작을 실행할 때 발생한 상황을 보여 주고 새로 만든 테이블이 pgAdmin 응용 프로그램에 있는 위치를 자세히 보여 줍니다.데이터베이스와 테이블의 생성이 완료됨에 따라 데이터베이스에 데이터를 저장하고 저장된 데이터를 검색할 때가 되었다.
그 전에 프로젝트 폴더에
index.js
라는 파일을 만듭니다. 이 파일은 서버와 express 코드를 포함합니다.우리의 index.js
에 다음 코드를 입력하십시오. const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
// Add route code Here
app.get('/', (req, res) => {
res.send('Welcome to Our SCHOOL API');
});
app.listen(port, () => {
console.log(`We are live at 127.0.0.1:${port}`);
});
응용 프로그램을 실행하려면 index.js
파일에서 찾은 scripts
대상에 두 개의 추가 코드를 추가하고 만들기 전에 이 두 개의 코드를 삭제하십시오. "dev": "nodemon index.js",
"start": "node index.js",
현재 프로젝트를 실행하려면 nodemon 옵션을 사용할 것입니다. 따라서 우리가 어떤 변경을 하든지 간에 우리는 주의할 수 있습니다.변경해서 저장할 때, 노드몬이 서버를 다시 시작하는 방법을 관찰해 보십시오.
저희 서버가 시작된 상황에서 서버에서 정탐하고 있는 링크
package.json
를 방문하십시오. 제 서버에서 지정한 것처럼.집배원 프로그램을 열고 링크를 사용하여 GET 요청을 보냅니다.이제 학생들의 창설과 모든 학생들이 얻을 수 있는 경로를 만듭니다.
127.0.0.1:3000
파일의 첫 번째 루트 다음에 다음 코드를 추가합니다. 이 코드들은 처리되고 한 학생을 삽입하여 모든 학생을 얻습니다.데이터베이스에 삽입할 수 있도록 요청 주체에 제공할 값을 선택해야 합니다. 이를 위해 body-parser라는 노드 패키지를 사용합니다.npm install body-parser
상기 패키지를 설치한 후, 우리의 노선을 계속하기 전에 다음 코드를 우리의 index.js
에 추가합니다.다음 내용 추가index.js
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyparser.urlencoded({extended:true}));
이제 우리의 노선을 계속합시다.app.get('/student', (req, res) => {
pool.connect((err, client, done) => {
const query = 'SELECT * FROM students';
client.query(query, (error, result) => {
done();
if (error) {
res.status(400).json({error})
}
if(result.rows < '1') {
res.status(404).send({
status: 'Failed',
message: 'No student information found',
});
} else {
res.status(200).send({
status: 'Successful',
message: 'Students Information retrieved',
students: result.rows,
});
}
});
});
});
app.post('/student', (req, res) => {
const data = {
name : req.body.studentName,
age : req.body.studentAge,
classroom : req.body.studentClass,
parents : req.body.parentContact,
admission : req.body.admissionDate,
}
pool.connect((err, client, done) => {
const query = 'INSERT INTO students(student_name,student_age, student_class, parent_contact, admission_date) VALUES($1,$2,$3,$4,$5) RETURNING *';
const values = [data.name, data.age, data.classroom, data.parents, data.admission];
client.query(query, values, (error, result) => {
done();
if (error) {
res.status(400).json({error});
}
res.status(202).send({
status: 'SUccessful',
result: result.rows[0],
});
});
});
});
응용 프로그램을 실행하고postman의 링크를 방문하십시오. 이번에 요청한 GET와 POST 사이의 교체된 링크를 방문합니다const app = express();
.아래의 캡처를 보세요. 우체부를 어떻게 테스트하는지 모르면 똑같은 일을 하세요.워라!!!이제 데이터베이스로 API를 가져오고 전송할 수 있습니다.
주의: 우리의 루트, 서버, express 프로그램을 파일에 놓는 것은 좋지 않습니다. GitHub, fork,submit PR에서 이 프로젝트 저장소를 시작하여 제가 그것을 계속 처리할 때 어떻게 조작하는지 확인하거나 직접 처리하고 전송 요청을 제출할 수 있습니다.
응용 프로그램에 루트를 추가합니다. 특정한 학생 정보를 얻으려면 루트를 작성하지만, 조회를 작성하고 배운 내용에 따라 응답해 주십시오.
app.get('/student/:id', (req,res) => {
const id = req.params.id;
res.send(`Student ${id} profile`);
});
우리가 새로운 단점에 요청을 할 때, 우리는 얻을 수 있다.따라서 코드를 완성하고 데이터베이스에서 id를 인용하고 있는 학생을 선택하십시오.
다음은 GitHub 재구매 계약입니다.주연을 잊지 마라.감사합니다.
다음 강좌에서 우리는 루트에 대해 어떻게 신분 검증을 하는지를 연구할 것이기 때문에 적당한 신분 검증이 없으면 사용자가 루트에 접근할 수 없다.
오구루 존슨 / AwesomeNodePostgres 동충하초
이 프로젝트를 만드는 목적은 PostgreSQL 영구화 데이터를 사용하는 방법을 가르치는 동시에 NodeJ를 사용하여 API를 만드는 것입니다
Node Express PPOTGRES
dev.to의 노드 API 튜토리얼에 대한 코드 라이브러리
데이터베이스에 레코드 저장
데이터베이스에서 레코드 검색
데이터베이스 기록 업데이트 등
프로젝트
AwesomeNodePostgres 동충하초
이 프로젝트를 만드는 목적은 PostgreSQL 영구화 데이터를 사용하는 방법을 가르치는 동시에 NodeJ를 사용하여 API를 만드는 것입니다
현재 모든 학생 보기, 학생 추가, 학생 세부 정보 편집, 학생 삭제 등을 처리하는 API인 교실 응용 프로그램을 만드는 데 주력할 것입니다. 이 프로젝트에 참여하고 자술한 파일에 어떻게 사용하는지에 대한 지침을 남기면 다른 기능을 마음대로 추가할 수 있습니다.md 파일
View on GitHub
Reference
이 문제에 관하여(ORM과 같은 sequelize의 도움말 없이 PostgreSQL 영구화 노드 API를 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ogwurujohnson/-persisting-a-node-api-with-postgresql-without-the-help-of-orms-like-sequelize-5dc5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 프로젝트를 만드는 목적은 PostgreSQL 영구화 데이터를 사용하는 방법을 가르치는 동시에 NodeJ를 사용하여 API를 만드는 것입니다
현재 모든 학생 보기, 학생 추가, 학생 세부 정보 편집, 학생 삭제 등을 처리하는 API인 교실 응용 프로그램을 만드는 데 주력할 것입니다. 이 프로젝트에 참여하고 자술한 파일에 어떻게 사용하는지에 대한 지침을 남기면 다른 기능을 마음대로 추가할 수 있습니다.md 파일
View on GitHub
Reference
이 문제에 관하여(ORM과 같은 sequelize의 도움말 없이 PostgreSQL 영구화 노드 API를 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ogwurujohnson/-persisting-a-node-api-with-postgresql-without-the-help-of-orms-like-sequelize-5dc5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)