24

我想开始使用 Sequelize,这是一个允许在 node.js 中为 mysql 进行 ORM 的模块。我想知道是否可以像 CakePHP 那样自动生成模型。在 CakePHP 中,它将读取表的信息,并自动在模型中创建关联和字段及其类型。我真的很讨厌必须手工完全绘制出我所有的表格,因为有些表格相对较大。有什么东西可以为我做这件事吗?还是我一个人将所有模型都手动打出来?

4

6 回答 6

26

您可以通过 sequelize-auto 自动生成模型。只需点击以下链接 https://github.com/sequelize/sequelize-auto

它将生成您的表格模型。

于 2014-08-04T18:18:16.680 回答
11

现在您可以使用sequelize-automate 自动生成模型。sequelize-auto好像很久没维护了,包已经过时了。

$ npm install sequelize-automate
$ ./node_modules/.bin/sequelize-automate --help

例如:

$ ./node_modules/.bin/sequelize-automate -t js -h localhost -d test -u root -p root -o models
于 2019-12-23T03:02:25.007 回答
4

Sequelizer - 一个桌面应用程序,用于自动和可视地导出续集模型。

使用 ElectronJS 制作的令人印象深刻的 GUI 客户端,请点击此处:来源:https ://github.com/andyforever/sequelizer

于 2018-06-12T19:21:44.753 回答
2

您可以为每个模型使用同步方法

例子:

Object.keys(db).forEach((modelName) => {
    db[modelName].sync().then(result => {
       // some logic
    }).catch(err => {
       // some logic
    })
});

如果表不存在,逻辑将创建一个新表

完整脚本index.js

'use strict';
const fs        = require("fs");
const path      = require("path");
const Sequelize = require("sequelize");

const sequelize = new Sequelize(process.env.DB_DATEBASE, process.env.DB_USER, process.env.DB_PASS, {
    host: process.env.DB_HOST,
    port: process.env.DB_PORT,
    dialect: 'mysql',
    operatorsAliases: false
});

const db = {};

fs
  .readdirSync(__dirname)
  .filter((file) => {
    return (file.indexOf(".") !== 0) && (file !== "index.js") && (file !== "migrations") && (file !== "redshift-migrations");
  })
  .forEach((file) => {
    const model = sequelize.import(path.join(__dirname, file));
    db[model.name] = model;
  });

Object.keys(db).forEach((modelName) => {
  if ("associate" in db[modelName]) {
    db[modelName].associate(db);
  }

  db[modelName].sync().then(result => {
    // some logic
  }).catch(err => {
    // some logic
  })
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

该脚本获取给定目录中的所有文件(模型),您将在其中放置 index.js 文件

结构如下所示:

结构体

于 2018-09-19T18:03:25.113 回答
1

https://github.com/sequelize/sequelize/issues/339

Sequelize 提供了读取数据库现有表名的方法。此外,还有一种读取表结构的方法。结合起来,应该可以自动创建模型。

于 2012-11-22T07:05:06.533 回答
1

使用 npm install --save-dev sequelize-cli

使用 npm install --save-dev sequelize-auto

npx sequelize-auto -o "./database/models" -d -h localhost -u root -p 3306 -x '' -e mysql

于 2021-03-25T10:06:04.783 回答