12

我正在考虑将Sails用于我们正在开发的应用程序。

我正在使用使用水线 orm 的sails-postgresql 适配器。

我有一个想要连接的现有数据库。

如果我使用创建模型generate something

然后在我的模型中

attributes:{
    title:{type:'String'}
}

something如果我浏览到 localhost/something,orm 会删除表中除标题之外的所有列。

有没有办法阻止它这样做?此应用不应删除此数据库中的列。

谢谢!

4

1 回答 1

26

我是 Sails-Postgresql 的作者。Sails 有一个称为 Waterline 的 ORM,用于管理数据。默认设置假定您希望auto-migrate您的数据库与您的模型属性相匹配。因为 Postgresql 是一个 SQL 数据库,所以 Sails-Postgresql 适配器有一个名为 syncable 的设置,默认为 true。这在像 redis 这样的 NoSQL 数据库中是错误的。

如果您想自己管理数据库列,这很容易关闭。您可以添加migrate: safe到您的模型中,当您启动 Sails 时,它不会尝试更新您的数据库模式。

module.exports = {
  adapter: 'postgresql',
  migrate: 'safe',
  attributes: {
    title: { type: 'string' }
  }
};

Sails 在 Rails 中没有任何类似迁移的功能。它使用自动迁移尝试将其从您的开发过程中删除,然后将更新您的生产模式留给您。

于 2013-06-20T00:38:53.947 回答