使用 sequelize.js 与现有数据库交互?

Alz*_*orz 3 node.js sequelize.js

我目前正在一个项目中工作,我们的 Node.js 服务器将针对现有的 MySQL 数据库执行大量交互。因此,我想知道 Sequelize 是否是连接数据库的好库。从我读到的关于它的内容来看,它最常被用作数据库的主人。但就我而言,它只有选择、插入、删除访问权限,而不能访问修改和创建表等。Sequelize 是否支持这种与数据库交互的方法?

如果 Sequelize 确实对此有效,我需要禁用哪些设置才能避免遇到太多麻烦?阅读他们的文档后,我找不到任何全局设置将其变成一个简单的界面工具。时间戳等可以在表定义上禁用,但不能全局禁用我所看到的。非常感谢任何输入。

Jan*_*ier 7

这篇文章有很多问题,我会尽量一一解答:

全局禁用时间戳:

new Sequelize(... ,{
  define: {
    timestamps: false
  }
});
Run Code Online (Sandbox Code Playgroud)

您可以将任何define选项传递给 sequelize 构造函数,它们将应用于所有对sequelize.define

映射到现有数据库

我将在这里尝试描述一些常见情况:

我希望我的模型与我的数据库表具有不同的名称:

sequelize.define('name of model', attributes, {
   tableName: 'name of table'
});
Run Code Online (Sandbox Code Playgroud)

我的数据库列的名称与模型中的属性不同:

sequelize.define('name of model', {
  name_of_attribute_in_model: {
    type: ...
    field: 'name of field in table'
  }
});
Run Code Online (Sandbox Code Playgroud)

我的主键不叫id:

sequelize.define('name of model', {
  a_field_totally_not_called_id: {
     primaryKey: true // also allows for composite primary keys, even though the support for composite keys accross associations is spotty
     autoIncrement: true
  }
});
Run Code Online (Sandbox Code Playgroud)

我的外键被称为不同的东西

X.belongsTo(Y, { foreignKey: 'something_bla' });
Run Code Online (Sandbox Code Playgroud)

免责声明:我是续集的维护者:)。总的来说,我认为我们对使用旧数据库有很好的支持。请随时在此处或在 irc://irc.freenode.net#sequelizejs 上提出更多问题