Я создаю сервер Graphql с использованием Express и Mongoose для сервиса среднего уровня и имею структуру проекта, такую как
-models
---user.js
---messages.js
---index.js
-resolvers/
-schema/
-index.js
с index.js в качестве точки входа. Я пытаюсь экспортировать модуль из src / models / index.js в src / models / user.js и src / models / messages.js.
В настоящее время я экспортирую функцию для подключения к базе данных из src / models / index.js в src / index.js, которая работает отлично. Но попытка импортировать один и тот же экспорт в одну и ту же директорию (папку моделей) делает модуль недоступным.
Казалось бы, изменив синтаксис на
export function getDatabaseConnections (dbName) {
...
}
работает для распознавания функции внутри src / models / user.js, но переменная соединений остается неопределенной внутри файлов независимо от синтаксиса экспорта.
ЦСИ / модели / index.js
var connections = {};
const connectToDB = () => {
return mongoose.connect(mongo_uri, { useNewUrlParser: true});
};
const getDatabaseConnections = (dbName) => {
if(connections[dbName]) {
return connections[dbName];
} else {
// if the connection object doesn't already exist, create and return
connections[dbName] = mongoose.createConnection(mongo_uri, { useNewUrlParser: true });
return connections[dbName];
}
};
const models = { User, Message };
export { connectToDB, getDatabaseConnections, connections };
export default models;
Импорт в src / index.js, который работает.
import models, { connectToDB, getDatabaseConnections, connections } from './models';
connectToDB(); // this functions properly
console.log(connections) // functions
getDatabaseConnections('dbName') // functions
Внутри src / models / user.js
import { connectToDB, getDatabaseConnections, connections } from './index';
connectToDB(); // fails
console.log(connections) // fails
getDatabaseConnections('dbName') // fails
Внутри src / models / message.js я получаю TypeError: (0, _index.getDatabaseConnections) не является функцией, но я ожидаю, что импорт будет работать так же, как и в точке входа приложения.