Модели Thinky в отдельных файлах: как обрабатывать циклические / циклические зависимости

Я попытался последовать этому примеру, но мне не повезло.

У меня есть модель пользователя в файле user.js:

import thinky from './thinky';
let type = thinky.type;
let User = thinky.createModel('User', {
  id: type.string(),
  username: type.string(),
});
export default User;

let Game = require('./game');
User.hasAndBelongsToMany(Game, "games", "id", "id");

Модель игры в файле game.js:

import thinky from './thinky';
let type = thinky.type;
let Game = thinky.createModel('Game', {
  id: type.string(),
  host: type.string()
});

export default Game;

let User = require('./user');
Game.hasAndBelongsToMany(User, "players", "id", "id");

Когда я пытаюсь импортировать их в файл test.js, где я создаю экземпляры User и Game, я получаю First argument of hasAndBelongsToMany must be a Model

Я пытался написать его без синтаксиса ES6, до сих пор не работает...

3 ответа

Решение

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

Нам нужно избегать циклической ссылки, так что..

user.js

import thinky from './thinky';
let type = thinky.type;
let User = thinky.createModel('User', {
  id: type.string(),
  username: type.string(),
});
export default User;

game.js

import thinky from './thinky';
let type = thinky.type;
let Game = thinky.createModel('Game', {
  id: type.string(),
  host: type.string()
});

export default Game;

index.js

import User from './user';
import Game from './game';

Game.hasAndBelongsToMany(User, "players", "id", "id");
User.hasAndBelongsToMany(Game, "games", "id", "id");

export {User, Game};

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

https://github.com/mwielbut/thinky-loader

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