我正在设计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 还是 noSQL 之一)。那没问题。
但如果我想创建另一个服务来保留已删除的项目,比如说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',
})