2017-08-01 35 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