Node.js
Node.js / Express.js를위한 MongoDB 통합
수색…
소개
MongoDB는 MEAN 스택의 도움으로 가장 유명한 NoSQL 데이터베이스 중 하나입니다. 급류 응용 프로그램에서 Mongo 데이터베이스와 인터페이스하는 것은 일종의 질문 구문을 이해하고 나면 빠르고 쉽습니다. 우리는 몽구스를 사용하여 우리를 도울 것입니다.
비고
자세한 내용은 http://mongoosejs.com/docs/guide.html 에서 확인할 수 있습니다 .
MongoDB 설치하기
npm install --save mongodb
npm install --save mongoose //A simple wrapper for ease of development
서버 파일 (일반적으로 index.js 또는 server.js라고 함)
const express = require('express');
const mongodb = require('mongodb');
const mongoose = require('mongoose');
const mongoConnectString = 'http://localhost/database name';
mongoose.connect(mongoConnectString, (err) => {
if (err) {
console.log('Could not connect to the database');
}
});
몽구스 모델 만들기
const Schema = mongoose.Schema;
const ObjectId = Schema.Types.ObjectId;
const Article = new Schema({
title: {
type: String,
unique: true,
required: [true, 'Article must have title']
},
author: {
type: ObjectId,
ref: 'User'
}
});
module.exports = mongoose.model('Article, Article);
이것을 해부 해 봅시다. MongoDB와 Mongoose는 데이터 형식으로 JSON (실제로는 BSON이지만 여기서는 관련이 없습니다)을 사용합니다. 맨 위에 입력을 줄이기 위해 몇 가지 변수를 설정했습니다.
나는 new Schema
만들고이를 상수에 할당한다. 그것은 단순한 JSON이고 각 속성은 더 일관성있는 스키마를 시행하는 데 도움이되는 속성을 가진 또 다른 Object입니다. Unique는 새로운 인스턴스를 데이터베이스에 삽입하여 분명히 고유하게 만듭니다. 이 기능은 사용자가 서비스에서 여러 계정을 만들지 못하게합니다.
필수 항목은 배열로 선언 된 또 다른 항목입니다. 첫 번째 요소는 부울 값이고 두 번째 요소는 삽입되거나 업데이트되는 값이 존재하지 않으면 오류 메시지입니다.
ObjectIds는 모델 간의 관계에 사용됩니다. '사용자 의견이 많습니다'와 같은 예가있을 수 있습니다. ObjectId 대신 다른 속성을 사용할 수 있습니다. 사용자 이름과 같은 문자열이 하나의 예입니다.
마지막으로 API 경로와 함께 사용하기 위해 모델을 내보내는 것은 스키마에 대한 액세스를 제공합니다.
Mongo 데이터베이스 쿼리하기
간단한 GET 요청. 위 예제의 Model이 ./db/models/Article.js
파일에 있다고 가정 해 봅시다.
const express = require('express');
const Articles = require('./db/models/Article');
module.exports = function (app) {
const routes = express.Router();
routes.get('/articles', (req, res) => {
Articles.find().limit(5).lean().exec((err, doc) => {
if (doc.length > 0) {
res.send({ data: doc });
} else {
res.send({ success: false, message: 'No documents retrieved' });
}
});
});
app.use('/api', routes);
};
이제이 끝점에 HTTP 요청을 보내 데이터베이스에서 데이터를 가져올 수 있습니다. 몇 가지 핵심 사항 :
- 한계는 정확히 어떻게 생겼는지를 나타냅니다. 나는 단지 5 개의 문서를 되찾고있다.
- 린 (Lean)은 원시 BSON의 일부를 제거하여 복잡성과 오버 헤드를 줄입니다. 필요하지 않습니다. 그러나 유용합니다.
- 사용하는 경우
find
대신findOne
의 확인doc.length
때문입니다 0보다 큰 것입니다find
이 기간 동안 확인되지 않는 이상, 빈 상태 (empty)의 배열이 오류를 처리하지 않습니다, 배열을 반환 항상 - 나는 개인적으로 그 형식으로 오류 메시지를 보내고 싶다. 필요에 맞게 변경하십시오. 반환 된 문서에서도 마찬가지입니다.
- 이 예제의 코드는 명시 적 서버가 아닌 다른 파일에 배치했다고 가정합니다. 서버에서 이것을 호출하려면 서버 코드에 다음 행을 추가하십시오.
const app = express();
require('./path/to/this/file')(app) //