[NodeJs][Kotlin] findOne() у NodeJs та Kotlin: використання та результати відрізняються.

findOne в MongoDB для Node.js та findOne в MongoRepository для Spring Data MongoDB мають подібні принципи роботи, але відрізняються в способах використання та налаштуванні через те, що вони працюють у двох різних платформах (Java і JavaScript). Ось порівняння між ними:

pic

1. findOne в Node.js

У Node.js ми використовуємо MongoDB Driver або ODM, наприклад Mongoose, для виконання запитів до бази даних. Приклад використання findOne в Mongoose:

const mongoose = require('mongoose');  

const transactionSchema = new mongoose.Schema({  
 accountNo: String,  
 createdAt: Date,  
 // інші поля  
});  

const Transaction = mongoose.model('Transaction', transactionSchema);  

// отримання останньої транзакції за допомогою accountNo  
Transaction.findOne({ accountNo: '12345' }, (err, transaction) => {  
 if (err) {  
 console.error(err);  
 } else {  
 console.log(transaction);  
 }  
});

2. findOne в MongoRepository (Spring Data)

У Spring Data MongoDB, findOne створюється за допомогою назв методів у інтерфейсі репозиторію. Приклад використання findOne (або findOneBy...) в Spring Data MongoDB:

public interface TransactionRepository extends MongoRepository {  
 Transaction findOneByPolicyNo(String policyNo);  
}  

// виклик в сервісі  
Transaction transaction = transactionRepository.findOneByAccountNo("12345");

Основні відмінності

1. Мови програмування:

  • Node.js використовує JavaScript/TypeScript
  • Spring Data використовує Java

2. Використання та найменування:

  • В Node.js ми повинні працювати з callback або Promise для обробки результатів
  • У Spring Data можна автоматично створити запит за допомогою імені методу

3. Обробка помилок:

  • В Node.js ми обробляємо помилки в callback або Promise
  • У Spring Data Java автоматично генерує помилки у разі проблем із запитом

4. Повернення результатів:

  • У Node.js, якщо є кілька документів, що відповідають умовам, повертається перший знайдений документ
  • У Spring Data, findOneBy вимагає, щоб був лише один документ, що відповідає умовам; якщо їх більше, буде помилка

Підсумок

Обидва підходи мають схожі принципи для пошуку документів у MongoDB, але відрізняються у використанні та обробці помилок. Якщо ви працюєте в Node.js або Java, вам потрібно ознайомитись з тим, як кожна платформа обробляє запити до MongoDB.

Варто зазначити, що якщо в даних є декілька записів з однаковим accountNo, то Mongoose поверне останній запис, а в MongoRepository це викличе помилку "returned non unique result".

Перекладено з: [NodeJs][Kotlin] findOne() ใน NodeJs และ Kotlin การใช้งานและผลลัพธ์ไม่เหมือนกัน

Leave a Reply

Your email address will not be published. Required fields are marked *