웹 프론트엔드 JS 튜토리얼 Bookshelf.js로 시작하는 것

Bookshelf.js로 시작하는 것

Feb 21, 2025 am 10:13 AM

Getting Started with Bookshelf.js

코어 포인트

<..> Bookshelf.js는 JavaScript (특히 Node.js) 용 ORM (Object-Relational Mapping) 소프트웨어로, 개발자가 선택한 프로그래밍 언어의 객체를 선택하여 데이터베이스.

라이브러리는 CRUD (작성, 읽기, 업데이트, 삭제) 작업을 수행하는 간단하고 직관적 인 방법을 제공하고 약속 기반 인터페이스를 지원합니다. 즉, 쿼리가 성공할 때만 기능이 호출됩니다.
    기사에서 블로그 JSON API를 작성하는 예에서 볼 수 있듯이 Bookshelf.js는 Express.js와 함께 API를 구축하는 데 사용될 수 있으며 기본 데이터베이스 테이블 구조를 캡슐화하여 일반 JavaScript를 노출시키는 데 사용할 수 있습니다. 쿼리 객체.
  • 최근 몇 년 동안 JavaScript가 인기를 얻었습니다. 수년에 걸쳐 사람들은이 인기있는 언어를 서버 측에 여러 번 적용하려고 시도했습니다. 가장 성공적인 시도 중 하나는 Node.js였습니다. 이는 서버 응용 프로그램을 빠르게 작성하는 방법으로 커뮤니티에 추천되었습니다. 노드의 판매 지점은 성능 및 개발 시간 측면에서 속도입니다. 이러한 인기를 받아 커뮤니티는 계속 성장하고 있으며이 프로젝트는 더 많은 기여자의 혜택을 받아 Express.js와 같은 고품질 모듈을 만듭니다.
  • 그래서 사람들은 노드를 사용하여 완전한 백엔드를 구축하기 시작했습니다. 백엔드 시스템이해야 할 가장 중요한 것 중 하나는 데이터베이스와 효과적으로 통신하는 것입니다. 객체 관계 매핑 (ORM) 소프트웨어가 들어오는 곳입니다. 종종 개발자는 데이터베이스와 통신하기 위해 사용중인 프로그래밍 언어와 SQL에 능숙해야합니다. ORM은 개발자가 선택한 프로그래밍 언어의 객체를 사용하여 데이터베이스와 상호 작용할 수 있도록하여 개발 프로세스를 단순화합니다. 이 기사는 ORM을 소개하고 Bookshelf.js Orm에 특별한주의를 기울입니다.
  • orm 란?
  • Wikipedia는 객체 관계 매핑을 다음과 같이 정의합니다
  • 객체 지향 프로그래밍 언어에서 호환되지 않는 유형 시스템간에 데이터를 변환하기위한 프로그래밍 기술. 이것은 실제로 프로그래밍 언어로 내부적으로 사용할 수있는 "가상 객체 데이터베이스"를 만듭니다.

이 예에서는 프로그래밍 언어가 JavaScript이고 호환되지 않는 시스템은 MySQL과 같은 관계형 데이터베이스 시스템입니다. 이는 ORM 라이브러리가 기존의 JavaScript 객체와 상호 작용하는 것과 같은 방식으로 데이터베이스와 통신 할 수 있어야 함을 의미합니다. Node.js에는 많은 ORM 라이브러리가 있으며 인기있는 라이브러리에는 persistence.js, sequelize.js 및 bookshelf.js가 포함됩니다. 이 기사는 Bookshelf.js를 소개합니다.

Bookshelf.js 예제

데이터베이스 상호 작용은 일반적으로 4 개의 CRUD 작업과 같은 4 개의 CRUD 작업을 중심으로 회전합니다. Bookshelf.js는 이러한 작업을 수행하는 직관적 인 방법을 제공합니다. 예를 들어 다음과 같은 작업을 작성합니다. Post가 해당 데이터베이스 테이블이있는 모델이며 이름은 데이터베이스 테이블의 열에 해당하는 속성이라고합니다. 마찬가지로 읽기 작업은 다음과 같습니다

new Post({name: 'New Article'}).save().then(function(model) {
  // ...
});
로그인 후 복사
로그인 후 복사
코드의 전화를주십시오. Bookshelf.js는 약속 기반 인터페이스를 지원합니다.이 경우 익명 함수가 전달 된 다음 쿼리가 성공할 때만 호출됩니다. 모델은 사용자와 관련된 속성에 액세스하는 데 사용할 수있는 생성 된 JavaScript 객체입니다. 이 예에서는 model.get ( 'gender')가 사용자의 성별을 반환합니다.

<🎜 🎜> <<> Bookshelf.js 및 Express.js <🎜 🎜>

가있는 API를 빌드하십시오 보다 완전한 예를 들어, 다음 리소스 JSON API가있는 블로그를 작성하도록 위임되었다고 가정 해 봅시다 : <🎜 🎜>

그리고 클라이언트는 이미 다음 표를 가지고 있습니다. <,> 우선, 우리는 Express.js 환경을 설정하려면 package.json을 사용해야합니다.

책장은 그것에 의존하기 때문에 Knex 쿼리 빌더가 필요하며 약속을 처리하려면 Bluebird가 필요합니다. app.js 구조는 다음과 같습니다

우리의 MySQL 데이터베이스를 블로그라고합니다. 기사 모델을 정의하고 기사 테이블에 바인딩해야합니다. 우리는 // {모델 정의 코드를 여기} :

대체합니다.
// select * from `user` where `email` = 'user@mail.com'
new User({email: 'user@mail.com'})
  .fetch()
  .then(function(model) {
    console.log(model.get('gender'));
  });
로그인 후 복사
로그인 후 복사
의심 할 여지없이 이것은 Bookshelf.js에서 모델을 정의하는 데 필요한 모든 것입니다. 이제이 모델을 사용하여 API의 데이터베이스를 쿼리 할 수 ​​있습니다. 먼저, get /api /article 방법은 데이터베이스의 모든 기사를 반환해야합니다.

Bookshelf.js의 fetchall은 데이터베이스 테이블의 모든 항목을 가져오고 오류가 발생한 경우에만 캐치가 수행됩니다 (문서에 더 많은 모델 메소드가 있습니다).

<🎜 🎜> <<> 결론
<code>GET  /api/article
GET  /api/article/:article_id
POST /api/article</code>
로그인 후 복사
로그인 후 복사

create table article (
  id int not null primary key,
  title varchar(100) null,
  body text null,
  author varchar(100) null
);
로그인 후 복사
<<> Bookshelf.js 시작하기 faq

bookshelf.js 란 무엇이며 왜 그것을 사용해야합니까?
{
  "name": "article_api",
  "description": "expose articles via JSON",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "bluebird": "^2.1.3",
    "body-parser": "^1.3.1",
    "express": "4.4.3",
    "mysql": "*",
    "knex": "*",
    "bookshelf": "*"
  }
}
로그인 후 복사
<..> bookshelf.js는 SQL 데이터베이스와 상호 작용할 수있는 간단하고 우아한 API를 제공하는 JavaScript 라이브러리입니다. 거래, 긴급/목이 긴급한 관계 로딩, 다형성 연관성 등을 지원합니다. Bookshelf.js를 사용하는 주요 장점은 단순성과 유연성입니다. 이를 통해 더 많은 작업을 수행하면서 더 적은 코드를 작성하여 개발 프로세스를보다 빠르고 효율적으로 만들 수 있습니다.

Bookshelf.js를 설치하는 방법?

Bookshelf.js를 설치하려면 시스템에 node.js 및 npm을 설치해야합니다. 설치가 완료되면 터미널에서 명령
// 当应用程序启动时
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var Promise = require('bluebird');

var dbConfig = {
  client: 'mysql',
  connection: {
    host: 'localhost',
    user: 'root',
    password: 'your_password',
    database: 'blog',
    charset: 'utf8'
  }
};

var knex = require('knex')(dbConfig);
var bookshelf = require('bookshelf')(knex);

app.set('bookshelf', bookshelf);

var allowCrossDomain = function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  next();
};

app.use(allowCrossDomain);
// 解析 application/x-www-form-urlencoded
app.use(bodyParser.urlencoded());

// 解析 application/json
app.use(bodyParser.json());

// 解析 application/vnd.api+json 为 json
app.use(bodyParser.json({type: 'application/vnd.api+json'}));

// 在其他地方,使用 bookshelf 客户端:
var bookshelf = app.get('bookshelf');

// {我们的模型定义代码在这里}

app.listen(3000, function() {
  console.log('Express started at port 3000');
});
로그인 후 복사
를 실행하여 Bookshelf.js를 설치할 수 있습니다. 여기에는 Knex.js (SQL 쿼리 빌더) 및 SQLITE3 (가벼운 디스크 기반 데이터베이스)뿐만 아니라 BookShelf.js와 Sugally Bookshelf.js가 설치됩니다.

Bookshelf.js를 내 데이터베이스에 연결하는 방법은 무엇입니까?

Bookshelf.js를 데이터베이스에 연결하려면 먼저 데이터베이스 구성으로 Knex.js를 초기화해야합니다. 그런 다음이 초기화 된 Knex 인스턴스를 Bookshelf.js로 전달합니다. 기본 예는 다음과 같습니다.

Bookshelf.js에서 모델을 정의하는 방법은 무엇입니까?

Bookshelf.js에서 는 Bookshelf.js에서 제공하는 기본 클래스 모델을 확장 하여이 모델을 정의합니다. 사용자 모델을 정의하는 예는 다음과 같습니다.
new Post({name: 'New Article'}).save().then(function(model) {
  // ...
});
로그인 후 복사
로그인 후 복사
Bookshelf.js를 사용하여 데이터베이스에서 데이터를 추출하는 방법은 무엇입니까?

Bookshelf.js를 사용하여 데이터베이스에서 데이터를 추출하는 것은 매우 간단합니다. 모델에서 제공 한 페치 방법을 사용할 수 있습니다. 예는 다음과 같습니다.

Bookshelf.js를 사용하여 데이터를 데이터베이스에 저장하는 방법은 무엇입니까?

Bookshelf.js를 사용하여 데이터를 데이터베이스에 저장하는 것도 쉽습니다. 모델에서 제공 한 저장 메소드를 사용할 수 있습니다. 예는 다음과 같습니다.

Bookshelf.js를 사용하여 데이터베이스에서 데이터를 업데이트하는 방법은 무엇입니까?
// select * from `user` where `email` = 'user@mail.com'
new User({email: 'user@mail.com'})
  .fetch()
  .then(function(model) {
    console.log(model.get('gender'));
  });
로그인 후 복사
로그인 후 복사
저장 메소드를 사용하여 데이터베이스의 데이터를 업데이트 할 수 있습니다. 먼저 모델을 추출한 다음 새 데이터로 저장을 호출하면됩니다. 예는 다음과 같습니다.

Bookshelf.js를 사용하여 데이터베이스에서 데이터를 삭제하는 방법은 무엇입니까?

모델에서 제공 한 파괴 방법을 사용하여 데이터를 데이터베이스에서 삭제할 수 있습니다. 예는 다음과 같습니다.

Bookshelf.js에서 관계를 처리하는 방법?

<.> Bookshelf.js는 Hasone, Hasmany, Solgsto 및 Solgstomany와 같은 모델 간의 관계를 다루는 몇 가지 방법을 제공합니다. 다음은 여러 게시물 모델이있는 사용자 모델의 예입니다.
<code>GET  /api/article
GET  /api/article/:article_id
POST /api/article</code>
로그인 후 복사
로그인 후 복사
bookshelf.js에서 거래를 처리하는 방법은 무엇입니까?

Bookshelf.js의 트랜잭션은 Knex.js에서 제공하는 트랜잭션 방법을 사용하여 처리 할 수 ​​있습니다. 예는 다음과 같습니다.

위의 코드 예제의 일부 세부 사항은 특정 데이터베이스 및 환경에 따라 조정해야 할 수도 있습니다. 또한 최신 정보와보다 자세한 지침은 Bookshelf.js의 공식 문서를 참조하는 것이 좋습니다.

위 내용은 Bookshelf.js로 시작하는 것의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? 프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? Apr 04, 2025 pm 02:42 PM

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

Demystifying JavaScript : 그것이하는 일과 중요한 이유 Demystifying JavaScript : 그것이하는 일과 중요한 이유 Apr 09, 2025 am 12:07 AM

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

누가 더 많은 파이썬이나 자바 스크립트를 지불합니까? 누가 더 많은 파이썬이나 자바 스크립트를 지불합니까? Apr 04, 2025 am 12:09 AM

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

Shiseido의 공식 웹 사이트와 같은 시차 스크롤 및 요소 애니메이션 효과를 달성하는 방법은 무엇입니까?
또는:
Shiseido의 공식 웹 사이트와 같은 페이지 스크롤과 함께 애니메이션 효과를 어떻게 달성 할 수 있습니까? Shiseido의 공식 웹 사이트와 같은 시차 스크롤 및 요소 애니메이션 효과를 달성하는 방법은 무엇입니까? 또는: Shiseido의 공식 웹 사이트와 같은 페이지 스크롤과 함께 애니메이션 효과를 어떻게 달성 할 수 있습니까? Apr 04, 2025 pm 05:36 PM

이 기사에서 시차 스크롤 및 요소 애니메이션 효과 실현에 대한 토론은 Shiseido 공식 웹 사이트 (https://www.shiseido.co.jp/sb/wonderland/)와 유사하게 달성하는 방법을 살펴볼 것입니다.

JavaScript의 진화 : 현재 동향과 미래 전망 JavaScript의 진화 : 현재 동향과 미래 전망 Apr 10, 2025 am 09:33 AM

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

JavaScript를 사용하여 동일한 ID와 동일한 ID로 배열 요소를 하나의 객체로 병합하는 방법은 무엇입니까? JavaScript를 사용하여 동일한 ID와 동일한 ID로 배열 요소를 하나의 객체로 병합하는 방법은 무엇입니까? Apr 04, 2025 pm 05:09 PM

동일한 ID로 배열 요소를 JavaScript의 하나의 객체로 병합하는 방법은 무엇입니까? 데이터를 처리 할 때 종종 동일한 ID를 가질 필요가 있습니다 ...

JavaScript 엔진 : 구현 비교 JavaScript 엔진 : 구현 비교 Apr 13, 2025 am 12:05 AM

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

프론트 엔드 개발에서 VSCODE와 유사한 패널 드래그 앤 드롭 조정 기능을 구현하는 방법은 무엇입니까? 프론트 엔드 개발에서 VSCODE와 유사한 패널 드래그 앤 드롭 조정 기능을 구현하는 방법은 무엇입니까? Apr 04, 2025 pm 02:06 PM

프론트 엔드에서 VSCODE와 같은 패널 드래그 앤 드롭 조정 기능의 구현을 탐색하십시오. 프론트 엔드 개발에서 VSCODE와 같은 구현 방법 ...

See all articles