Минимальный уровень абстракции базы данных - PullRequest
0 голосов
/ 03 марта 2020

Эй, я работаю над небольшим проектом, для всех намерений и целей я буду использовать 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

Я знаю, что это не очень хороший уровень абстракции, но если я когда-либо хотел перейти на другую технологию базы данных, он все равно дал бы мне интерфейс для этого, и я хочу что-то, что быстро и легко реализовать, может ли это сработать? Есть ли какие-то серьезные недостатки, которые я не рассматриваю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...