ObjectionJS - Группировка моделей в файле слоя данных - PullRequest
0 голосов
/ 28 мая 2019

У меня приложение NodeJS, работающее fastify с fastify-objectionjs.

Для удобства я хотел бы сгруппировать все модели в один файл с именем _main.js, где я экспортирую массив моделей в папке models.

Поскольку регистрация fastify-objectionjs требует массива моделей, я подумал, что могу просто импортировать массив из моего _main.js и передать его в том виде, как он есть, в функцию регистрации.

Но ObjectionJS говорит мне, что Недопустимые поставляемые модели .

/ app.js (точка входа в узел)

const fastify = require('fastify')({
    logger: true
})

const knexConfig = require('./knexfile')
const dataLayer = require('./models/_main')
fastify.register(require('fastify-objectionjs'), {
    knexConfig: knexConfig,
    models: dataLayer
})

// Also tried:
// fastify.register(require('fastify-objectionjs'), {
//     knexConfig: knexConfig,
//     models: [dataLayer]
// })

/ модели / _main.js

const User = require('./user.model')

var dataLayer = [User]

module.exports = dataLayer

// Also tried without var:
// module.exports = {
//     dataLayer: [
//         User
//     ]
// }

/ модели / user.model.js

const Knex = require('knex')
const connection = require('../knexfile')
const { Model } = require('objection')
const knexConnection = Knex(connection)
Model.knex(knexConnection)

class User extends Model {
  static get tableName () {
    return 'users'
  }
}

module.exports = { User }

Я не могу найти проблему в потоке файлов, но если я создаю массив моделей на лету, приложение запускается плавно:

/ app.js (точка входа в узел)

const fastify = require('fastify')({
    logger: true
})

const knexConfig = require('./knexfile')
const User = require('./models/user.model') // changed
fastify.register(require('fastify-objectionjs'), {
    knexConfig: knexConfig,
    models: [User] // changed
})

Есть идеи, почему это не работает? Заранее спасибо за ваше время.

1 Ответ

0 голосов
/ 28 мая 2019

Нашел ошибку, мне просто нужно было использовать деструктуризацию в require из User, например:

/ models / _main.js

// BAD
// const User = require('./user.model')

// GOOD
const { User } = require('./user.model')

module.exports = [User]

Работает как шарм.

Полезный вопрос, объясняющий разницу: В фигурных скобках (скобках) в узле требуется оператор

...