0
我將我的Rails應用程序的JSON api移動到Node.js.我使用Sequelize作爲ORM在我的postgres數據庫中訪問我的數據。Sequelize findOrCreate()不創建對象
然而,當我嘗試使用findOrCreate(),它需要創造一個記錄,奇怪的事情發生了:
INSERT INTO "gameweeks" ("id","number","gw_pts","transfers","transfers_malus","team_id","captain_id","vice_captain_id","in_bank","team_value","overall_rank") VALUES (NULL,16,NULL,NULL,NULL,6,NULL,NULL,NULL,NULL,NULL) RETURNING *;
Executing (default): SELECT * FROM "gameweeks" WHERE "gameweeks"."team_id"=12 AND "gameweeks"."number"=16 LIMIT 1;
看來它會嘗試沒有任何ID創建一個記錄,因此它扔錯誤
error: null value in column "id" violates not-null constraint
當它不需要創建記錄(更新或只是讀取數據)它工作正常。
這裏是我的代碼:
sequelize選項
sequelize = new Sequelize('dashboard_development', 'dashboard', null, {
dialect: "postgres",
port: 5432,
define: {
underscored: true,
timestamps: false
},
sync: { force: true }
})
型號
gameweek.js:
module.exports = function(sequelize, DataTypes) {
return sequelize.define('gameweek', {
number: DataTypes.INTEGER,
gw_pts: DataTypes.INTEGER,
transfers: DataTypes.INTEGER,
transfers_malus: DataTypes.INTEGER,
team_id: DataTypes.INTEGER,
captain_id: DataTypes.INTEGER,
vice_captain_id: DataTypes.INTEGER,
in_bank: DataTypes.FLOAT,
team_value: DataTypes.FLOAT,
overall_rank: DataTypes.INTEGER
});
};
其關聯:
global.db.Gameweek.belongsTo(global.db.Team)
.hasMany(global.db.Player, {as: "substitutes", joinTableName: "gameweeks_substitutes"})
.hasMany(global.db.Player, {joinTableName: "gameweeks_players"})
.belongsTo(global.db.Player, {as: "captain", foreignKey: "captain_id"})
.belongsTo(global.db.Player, {as: "vice_captain", foreignKey: "vice_captain_id"})
,並在那裏我用findOrCreate代碼:
db.Team.find({where: {fpl_id: fplTeamId}}).complete(function (err, team){
if (err) throw err;
db.Gameweek.findOrCreate({team_id: team.id, number: gwNumber}).complete(function (err, gameweek, created) {
if (err) throw err;
// Do stuff with the returned gameweek
})
})
任何人可以幫助或點我在正確的方向?
謝謝!
它的工作原理,但我遇到了現在的其他錯誤:) – Syl
同步力? o.O – jdnichollsc