2017-02-03 7 views
0

NodeJS 6.7.0とSqlite 3でSequelize 3.27.0を使用しています。オブジェクトを続行し、IDを返さないでください。

私は多対多の関係を持っていますが、新しい関係を作成しようとしています。私は何が間違っているのかを理解しようとする簡単なテストケースを作成しました。誰もが私が間違っているの何を提案することができます:

var User = sequelize.define('user', { 
    id: { 
     type: Sequelize.INTEGER, 
     primaryKey: true, 
     autoIncrement: true 
    } 
}); 

var Project = sequelize.define('project', { 
    id: { 
     type: Sequelize.INTEGER, 
     primaryKey: true, 
     autoIncrement: true 
    } 
}); 

var UserProject = sequelize.define('user_project', { 
    id: { 
     type: Sequelize.INTEGER, 
     primaryKey: true, 
     autoIncrement: true 
    }, 
    role: Sequelize.STRING, 
}); 

User.belongsToMany(Project, { through: UserProject }); 
Project.belongsToMany(User, { through: UserProject }); 

sequelize.sync({}).then(function() { 
    var userX; 

    User.create({}).then(function (user) { 
     userX = user; 
     return Project.create({}); 
    }).then(function (project) { 
     return userX.addProject(project); 
    }).then(function (userProject) { 
     console.log(userProject.id); 
    }); 
}); 

あなたはUserProjectのIDをtrueに設定「自動インクリメント」を持っている見ることができるように。上記を実行した結果は、idの値が 'undefined'になります。

答えて

0

具体的な回答が見つからないうちに、「UserProject」テーブルを「マッピングテーブル」として扱うべきだということが分かりました。エントリには本当に別のIDは必要ありません。

テーブルエントリは、ソーステーブルまたはデスティネーションテーブルと組み合わせて使用​​する場合にのみ意味を持ちます。これは単に関連を定義するために存在するため、 "is not associated to"タイプのエラーが表示された場合は注意する必要があります。

関連する問題