eggjs / egg

🥚 Born to build better enterprise frameworks and apps with Node.js & Koa
https://eggjs.org
MIT License
18.87k stars 1.81k forks source link

有没有sequelize-typescript示例 #3091

Closed icai closed 5 years ago

icai commented 5 years ago

能否兼容一下这个包

https://www.npmjs.com/package/sequelize-typescript

icai commented 5 years ago

需要在 sequelize 自定义

class NC {
  constructor(database, username, password, config) {
    return new Sequelize({
      name: database,
      username,
      password,
      dialect: config.dialect, // support: mysql, mariadb, postgres, mssql
      host: config.host,
      modelPaths: [ path.resolve(__dirname, '../app/model/') ],
    });
  }
}
// config.default.ts

    sequelize: {
      Sequelize: NC,
      dialect: 'mysql', // support: mysql, mariadb, postgres, mssql
      database: 'database',
      host: 'localhost',
      port: '3306',
      username: 'root',
      password: '',
      // delegate: 'myModel', // load all models to `app[delegate]` and `ctx[delegate]`, default to `model`
      // baseDir: 'my_model', // load all files in `app/${baseDir}` as models, default to `model`
      // exclude: 'index.js', // ignore `app/${baseDir}/index.js` when load models, support glob and array
      // more sequelize options
    },

Sequelize 参数 比较隐蔽,文档没有说,要看一下源代码

xiaobaiyouxi commented 5 years ago

请问有没有更详细点的说明

xiaobaiyouxi commented 5 years ago

sequelize-typescript 我一直没跑起来

fengbaozhiling commented 5 years ago

同样迫切需要sequelize-typescript的实例。整了半天没跑通

fengbaozhiling commented 5 years ago

有人能给出指导吗?sequelize-typescript的官方示例会什么时候放出来?

icai commented 5 years ago

这个包兼容了 egg https://github.com/icai/sequelize-auto

fengbaozhiling commented 5 years ago

Sequelize: NC,

源码也没有这个“Sequelize”吧

icai commented 5 years ago

@fengbaozhiling NC是自己写的adapter 构造函数

fengbaozhiling commented 5 years ago

@fengbaozhiling NC是自己写的adapter 构造函数

sequelize: { Sequelize: NC, dialect: 'mysql', // support: mysql, mariadb, postgres, mssql database: 'database', host: 'localhost', port: '3306', username: 'root', password: '', // delegate: 'myModel', // load all models toapp[delegate]andctx[delegate], default tomodel // baseDir: 'my_model', // load all files inapp/${baseDir}as models, default tomodel // exclude: 'index.js', // ignoreapp/${baseDir}/index.jswhen load models, support glob and array // more sequelize options },

Sequelize: NC,options类型不对,它会报错

KaneOne commented 5 years ago

@icai 请问 class NC { constructor(database, username, password, config) { return new Sequelize({ name: database, username, password, dialect: config.dialect, // support: mysql, mariadb, postgres, mssql host: config.host, modelPaths: [ path.resolve(__dirname, '../app/model/') ], }); } }

应该放在哪里,谢谢~

ZQun commented 5 years ago

@KaneOne ts开发可以用 midway 这里有sequelize-typescript案例 https://github.com/midwayjs/midway-examples/tree/master/demo-sequelize-typescript

icai commented 5 years ago

源码指的是这个 https://github.com/eggjs/egg-sequelize

https://github.com/eggjs/egg-sequelize/blob/04c9e72ffb1b19dbfcc42275e68fe5113eb5e2fc/lib/loader.js#L28

KaneOne commented 5 years ago

@KaneOne ts开发可以用 midway 这里有sequelize-typescript案例 https://github.com/midwayjs/midway-examples/tree/master/demo-sequelize-typescript

@ZQun 感谢,原来还有midway这个纯ts框架,可以在app.ts里面做db的初始化,我对egg还不是很熟悉,不知道应该在哪里初始化,看egg的文档似乎应该用插件的方式来实现,不过有些重了

KaneOne commented 5 years ago

源码指的是这个 https://github.com/eggjs/egg-sequelize

https://github.com/eggjs/egg-sequelize/blob/04c9e72ffb1b19dbfcc42275e68fe5113eb5e2fc/lib/loader.js#L28 @icai 谢谢,如果把sequelize-typescript包一层做为插件可能更优雅一点,我昨天看了nestjs和今天 @ZQun 推荐的 midway 可以直接在app.ts里面进行初始化,感觉比较简单。我对egg的框架还不太熟悉,不知道是否理解的对

KaneOne commented 5 years ago

源码指的是这个 https://github.com/eggjs/egg-sequelize

https://github.com/eggjs/egg-sequelize/blob/04c9e72ffb1b19dbfcc42275e68fe5113eb5e2fc/lib/loader.js#L28

@icai 现在可以了,NC我原先是放在config.default.ts里面的,但是我犯了个愚蠢的错误,我把plugins.ts里面的sequelize给注释了,虽然我在config.default.ts里面把NC对象加入了,并且执行,但是没有load进app,我看了你的源码链接才反应过来,感谢

DHPO commented 5 years ago

提示一个坑: sequelize-typescript加载的是class egg-sequelize加载的是function 两者是冲突的,所以需要在配置egg-sequelize的时候让它加载一个不存在的目录

config.sequelize = {
    Sequelize: NC,
    host: 'localhost',
    port: '3306',
    user: 'username',
    password: 'password',
    database: 'test',
    dialect: 'mysql',
    baseDir: 'nothing' // 不存在的目录
  }

其他配置和 @icai 一样