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

Я проектирую микросервис Moleculer JS , который расширяет Moleculer DB и может расширять как SQL (например, Sequelize ), так и noSQL (например, * 1007).* 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 Ответ

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

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

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',
    }
  },
}
...