findOne
в MongoDB для Node.js та findOne
в MongoRepository
для Spring Data MongoDB мають подібні принципи роботи, але відрізняються в способах використання та налаштуванні через те, що вони працюють у двох різних платформах (Java і JavaScript). Ось порівняння між ними:
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 การใช้งานและผลลัพธ์ไม่เหมือนกัน