Node.js 기본 사항 — MongoDB 약속 및 콜백

https://www.amazon.com/John-Au-Yeung/e/B08FT5NT62에서 Amazon에서 내 책을 확인하십시오.

지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.

Node.js는 실행되는 프로그램을 만드는 인기 있는 런타임 플랫폼입니다.

브라우저 외부에서 JavaScript를 실행할 수 있습니다.

이 기사에서는 Node.js를 사용하여 프로그램을 만드는 방법을 살펴보겠습니다.

약속과 콜백



MongoDB 클라이언트에는 약속을 반환하는 메서드가 있습니다.

결과가 나오기 전에 상태가 보류 상태일 수 있는 비동기 코드입니다.

결과가 나오면 작업이 성공적으로 완료되면 수행될 수 있습니다.

그렇지 않으면 거부된 상태가 됩니다.

예를 들어 updateOne 메서드는 약속을 반환합니다.

다음과 같이 작성하여 사용할 수 있습니다.

const { MongoClient } = require('mongodb');
const connection = "mongodb://localhost:27017";
const client = new MongoClient(connection);

async function run() {
  try {
    await client.connect();
    const testCollection = await client.db("test").collection('test');
    await testCollection.deleteMany({})
    const result = await testCollection.insertMany([
      { "_id": 1, "name": "apples", "qty": 5, "rating": 3 },
      { "_id": 2, "name": "bananas", "qty": 7, "rating": 1 },
      { "_id": 3, "name": "oranges", "qty": 6, "rating": 2 },
      { "_id": 4, "name": "avocados", "qty": 3, "rating": 5 },
    ]);
    console.log(result)
    const updateResult = await testCollection
      .updateOne({ name: "apple" }, { $set: { qty: 100 } })
    console.log(updateResult);
  } finally {
    await client.close();
  }
}
run().catch(console.dir);

updateOneawait 키워드로 호출하여 일단 확인된 값을 얻을 수 있도록 합니다.
updateOne는 약속을 반환하므로 await 키워드를 사용할 수 있습니다.

오류를 잡으려면 다음과 같이 작성할 수 있습니다.

const { MongoClient } = require('mongodb');
const connection = "mongodb://localhost:27017";
const client = new MongoClient(connection);

async function run() {
  try {
    await client.connect();
    const testCollection = await client.db("test").collection('test');
    await testCollection.deleteMany({})
    const result = await testCollection.insertMany([
      { "_id": 1, "name": "apples", "qty": 5, "rating": 3 },
      { "_id": 2, "name": "bananas", "qty": 7, "rating": 1 },
      { "_id": 3, "name": "oranges", "qty": 6, "rating": 2 },
      { "_id": 4, "name": "avocados", "qty": 3, "rating": 5 },
    ]);
    console.log(result)
    try {
      const updateResult = await testCollection
        .updateOne({ name: "apple" }, { $set: { qty: 100 } })
      console.log(updateResult);
    } catch (error) {
      console.log(`Updated ${res.result.n} documents`)
    }

} finally {
    await client.close();
  }
}
run().catch(console.dir);


거부된 약속에서 발생한 오류를 기록하기 위해 catch 블록을 추가합니다.

콜백



콜백을 사용하여 작업 결과를 얻을 수도 있습니다.

예를 들어 다음과 같이 작성할 수 있습니다.

const { MongoClient } = require('mongodb');
const connection = "mongodb://localhost:27017";
const client = new MongoClient(connection);

async function run() {
  try {
    await client.connect();
    const testCollection = await client.db("test").collection('test');
    await testCollection.deleteMany({})
    const result = await testCollection.insertMany([
      { "_id": 1, "name": "apples", "qty": 5, "rating": 3 },
      { "_id": 2, "name": "bananas", "qty": 7, "rating": 1 },
      { "_id": 3, "name": "oranges", "qty": 6, "rating": 2 },
      { "_id": 4, "name": "avocados", "qty": 3, "rating": 5 },
    ]);
    console.log(result)
    testCollection
      .updateOne({ name: "apple" }, { $set: { qty: 100 } }, (error, result) => {
        if (!error) {
          console.log(`Operation completed successfully`);
        } else {
          console.log(`An error occurred: ${error}`);
        }
      })
  } finally {
    await client.close();
  }
}
run().catch(console.dir);


세 번째 인수에서 콜백으로 updateOne를 호출합니다.

이렇게 하면 약속을 반환하는 대신 콜백으로 비동기 결과를 얻을 수 있습니다.

결론



MongoDB 클라이언트는 약속을 반환하거나 콜백을 사용하여 비동기 작업에서 결과를 얻을 수 있습니다.

좋은 웹페이지 즐겨찾기