Строгая коллекция / настройка имени таблицы в Moleculer DBService

Я разрабатываю микросервис Moleculer JS, который расширяет Moleculer DB и может расширять как адаптеры SQL (например, Sequelize), так и noSQL (например, MongoDB).

Вот book схема обслуживания

const uuid = require('uuid/v4')
const Sequelize = require('sequelize')
const DBService = require('moleculer-db')

const pkg = require('../package.json')
const adapter = require('../db/sql.adapter')

module.exports = {
  name: 'book',
  version: pkg.version,
  mixins: [DBService],
  settings: {
    $noVersionPrefix: true,
    idField: 'id',
  },
  adapter,
  model: {
    name: 'book',
    define: {
      id: { type: Sequelize.UUID, primaryKey: true, allowNull: false, defaultValue: uuid },
      name: { type: Sequelize.STRING, allowNull: false },
    },
  },
}

Хотя название модели book при запуске службы молекулярных books Будет создана таблица / коллекция (не имеет значения, SQL это или нет). Все в порядке.

Но в случае, если я хочу создать другой сервис, который будет хранить удаленные элементы, скажем, books_archive или же book_archive - books_archives или же book_archives (соответственно) будет создан.

Документация Sequelize содержит

freezeTableName: true,
tableName: 'booksArchive',

свойства конфигурации, которые я пытался вставить в settings блок схемы и внутри model блок, а внутри свойства конструкции адаптера (см. ниже), но без удачи - созданная коллекция (таблица) все еще содержит дополнительный s персонаж. Есть ли решение?

const adapter = new SQLAdapter(config.get('database.pg.uri'), {
    dialect: 'postgres',
    logging: false,
    freezeTableName: true,
    tableName: 'booksArchive',
})

1 ответ

Основываясь на секвелизе документов, вы должны установить их в опциях модели. Попытайся:

module.exports = {
  name: 'book',
  version: pkg.version,
  mixins: [DBService],
  settings: {
    $noVersionPrefix: true,
    idField: 'id',
  },
  adapter,
  model: {
    name: 'book',
    define: {
      id: { type: Sequelize.UUID, primaryKey: true, allowNull: false, defaultValue: uuid },
      name: { type: Sequelize.STRING, allowNull: false },
    },
    options: {
      freezeTableName: true,
      tableName: 'booksArchive',
    }
  },
}
Другие вопросы по тегам