Эй, я работаю над небольшим проектом, для всех намерений и целей я буду использовать mongodb, однако в качестве практики я хочу использовать уровень абстракции базы данных (который требует минимальных усилий). Я придумал это:
дБ. js:
const mongoose = require('mongoose', { useNewUrlParser: true})
const {credentials} = require('../../config');
const { connectionString } = credentials.mongo;
const User = require('../../models/user')
if (!connectionString){
console.error("MongoDB connection string missing!")
process.exit(1)
}
mongoose.connect(connectionString, { useNewUrlParser: true, useUnifiedTopology: true })
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
const mongoLink = mongoose.connection
mongoLink.on('error', err=>{
console.error("MongoDB error: " + err.message);
})
mongoLink.once('open', () => console.log('MongoDB connection established'))
function abstractFromDatabase(model){
return {
findOne : (async function() {
return model.findOne(...arguments).lean()
}),
findMany : (async function() {
return model.findMany(...arguments).lean()
})
//... more primitive functions here
}
}
module.exports.User = abstractFromDatabase(User)
//adding functions specific to model here
module.exports.User.getAllRelatedUsers = (async function() {
//...
})
//...export more database functionality
Я знаю, что это не очень хороший уровень абстракции, но если я когда-либо хотел перейти на другую технологию базы данных, он все равно дал бы мне интерфейс для этого, и я хочу что-то, что быстро и легко реализовать, может ли это сработать? Есть ли какие-то серьезные недостатки, которые я не рассматриваю?