2017-08-01 34 views
0

在Sequelize教程,它是说,一个模型是这样产生的:Sequelize如何不重新定义模型每次服务器启动

const User = sequelize.define('user', { 
    firstName: { 
    type: Sequelize.STRING 
    }, 
    lastName: { 
    type: Sequelize.STRING 
    } 
}); 

而不是保存(即创建表)是这样的:

User.sync().then(() => { 
    // do whatever 
}); 

但我希望这样做只需要一次,我只需要创建表格一次。因此,下一次我运行脚本时,如何检索以上代码之前定义的模型(即表)。

+1

你的代码已经做到了。如果您为同步呼叫提供了“{force:true}”选项,则Sync每次只会创建表格。在你的情况下,它只会创建表,如果它们不存在。请记住,如果您在初始同步后更改模式,则Sequelize不会在以后自动将更改添加到您的表中! –

+0

好的,谢谢,我明白了,但那是一种不合逻辑的IMO。 – Scarass

+1

是啊,有点儿。 https://github.com/sequelize/sequelize/blob/v3/lib/dialects/postgres/query-generator.js#L38。如果你有兴趣,可以参考。在Postgres中同步最终使用'CREATE TABLE IF NOT EXISTS'。 –

回答

0

在同步方法中,您可以传递选项以避免每次同步数据库表。这个选项将确保你的应用程序检查数据库中的表,如果它存在,那么它将不会创建,否则它将创建表。

User.sync(
{force: false}).then(() => { 
    // do whatever 
}); 

让我知道你是否仍然面临问题。我正在使用sequalize,但我没有收到此问题。

+0

我发现的问题是我需要重新定义模型。 IMO,模型只能创建一次。然后下一次服务器启动时,我只想得到在以前的运行中创建的模型。 – Scarass