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

Using sequelize.js to interface against existing database?

我目前在一个项目中工作,我们的 Node.js 服务器将对现有的 MySQL 数据库执行大量交互。因此我想知道 Sequelize 是否是一个很好的数据库接口库。据我了解,它最常被用作数据库的主人。但在我的例子中,它将只有 select、插入、删除访问权限,而没有修改和创建 tables 等的访问权限。 Sequelize 是否支持这种与数据库交互的方法?

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

这里有很多问题post,我会尽量一一解答:

全局禁用时间戳:

new Sequelize(... ,{
  define: {
    timestamps: false
  }
});

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

的所有调用

映射到现有数据库

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

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

sequelize.define('name of model', attributes, {
   tableName: 'name of table'
});

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

sequelize.define('name of model', {
  name_of_attribute_in_model: {
    type: ...
    field: 'name of field in table'
  }
});

我的主键不叫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
  }
});

我的外键叫法不同

X.belongsTo(Y, { foreignKey: 'something_bla' });

免责声明:我是 sequelize 的维护者 :)。总的来说,我认为我们对使用遗留数据库有很好的支持。欢迎在这里或 irc://irc.freenode.net#sequelizejs

上提出更多问题