Использование Think ORM в различных файлах без повторного подключения к базе данных

У меня есть куча моделей для thinky, и мне нужно создать объект в каждом файле для thinky и связать его примерно 10 раз, потому что у меня столько моделей.

var dbconfig = require('../config/config.js')['rethinkdb'];
var thinky = require('thinky')(dbconfig);
var User = require('./user.js');
var type = thinky.type;
var r = thinky.r;

var Feedback = thinky.createModel("Feedback", {
    id: type.string(),
    feel: type.number().required(), // 0 = sad, 1 = happy
    reason: type.string(),
    description: type.string(),
    createdAt: type.date().default(r.now()),
    createdBy: type.string().required()
});

Feedback.ensureIndex("id");

module.exports = Feedback;

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

2 ответа

Решение

Я понял, братан, вот ответ, который ты долго искал:

// file: util/thinky.js
var thinky = require('thinky')({
    // thinky's options
})

module.exports = thinky;

Затем включите это так:

// file: models/user.js
var thinky = require(__dirname+'/util/thinky.js');
var type = thinky.type;

var User = thinky.createModel("User", {
    id: type.string(),
    name: type.string(),
    age: type.number()
});

module.exports = User;

С уважением человек в зеркале (я понял, братан)

Архитектура, которую вы используете для создания и экспорта продуманных моделей, может быть неправильной.

Обратитесь к этому руководству для полной предлагаемой архитектуры. https://thinky.io/documentation/architecture/

Другие вопросы по тегам