Строгая коллекция / настройка имени таблицы в 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',
}
},
}