수색…


소개

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 요청을 보내 데이터베이스에서 데이터를 가져올 수 있습니다. 몇 가지 핵심 사항 :

  1. 한계는 정확히 어떻게 생겼는지를 나타냅니다. 나는 단지 5 개의 문서를 되찾고있다.
  2. 린 (Lean)은 원시 BSON의 일부를 제거하여 복잡성과 오버 헤드를 줄입니다. 필요하지 않습니다. 그러나 유용합니다.
  3. 사용하는 경우 find 대신 findOne 의 확인 doc.length 때문입니다 0보다 큰 것입니다 find 이 기간 동안 확인되지 않는 이상, 빈 상태 (empty)의 배열이 오류를 처리하지 않습니다, 배열을 반환 항상
  4. 나는 개인적으로 그 형식으로 오류 메시지를 보내고 싶다. 필요에 맞게 변경하십시오. 반환 된 문서에서도 마찬가지입니다.
  5. 이 예제의 코드는 명시 적 서버가 아닌 다른 파일에 배치했다고 가정합니다. 서버에서 이것을 호출하려면 서버 코드에 다음 행을 추가하십시오.
const app = express();
require('./path/to/this/file')(app) // 


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow