我正在设计SQL微服务,它扩展了Moleculer DB,可以扩展Moleculer JS (例如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 documentation包含
freezeTableName: true,
tableName: 'booksArchive',我试图将其放在模式的settings块和model块中的配置属性,以及适配器构造属性(见下文),但没有创建幸运集合(表),仍然只包含一个额外的s字符。有什么解决方案吗?
const adapter = new SQLAdapter(config.get('database.pg.uri'), {
dialect: 'postgres',
logging: false,
freezeTableName: true,
tableName: 'booksArchive',
})发布于 2019-05-21 00:48:47
基于sequelize文档,您应该在模型选项中设置它们。试试看:
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',
}
},
}https://stackoverflow.com/questions/56222559
复制相似问题