2016-11-22 65 views
0

我想在sequelize中使用findorcreate方法,它正確地在我的mysql數據庫中插入一行,但是我放入默認值部分的值沒有被插入。我該如何使用sequelize findorcreate默認值

這裏是我的代碼

return userDb 
    .findOrCreate({ 
    defaults: { 
     first_name: 'john', 
     last_name: 'doe', 
     email: '[email protected]' 
    }, 
    where: { 
     user_id:UserId 
    } 
    }) 

這裏是INSERT語句的調試輸出

INSERT INTO `user` (`id`,`user_id`,`deleted`,`created_on`) VALUES (DEFAULT,200,'0',NOW()); 

,你可以看到它甚至不嘗試插入的3場我都在默認部分。我錯過了什麼嗎?

+0

它看起來像你的'Model'沒有正確定義 - 'first_name','last_name'和'email'字段沒有被應用,這就是爲什麼默認值沒有被應用。你能否更新以包含'Sequelize.define()'? – doublesharp

+0

你是絕對正確的。如果您將此作爲答案,我會將其標記爲正確。 – ryanmc

+0

會做,謝謝。 – doublesharp

回答

1

您看到在INSERT的字段是Sequelize創建一個Model /臺,所以有可能是User Sequelize Model沒有正確定義的所有默認列。由於Model不包含這些列,因此您在defaults中指定的字段無法應用。

請確保您定義first_namelast_name,並在Sequelize.define()emailUserModel

const sequelize = new Sequelize(); 
const User = sequelize.define(
    'user', 
    { 
    first_name: { 
     type: Sequelize.STRING, 
    }, 
    last_name: { 
     type: Sequelize.STRING, 
    }, 
    email: { 
     type: Sequelize.STRING, 
    }, 
    } 
);