我如何创build一个与关联的续集的logging

我有2个模块的候选人,angular色和angular色可以有许多候选人在模式中映射到它。

role.js

module.exports = function(sequelize, DataTypes) { var Role = sequelize.define('Role', { name: DataTypes.STRING, level: DataTypes.STRING, job_desc: DataTypes.STRING(500) }, { associate: function(models) { Role.hasMany(models.Candidate); Role.hasMany(models.Requisition); } }); return Role; } 

candidate.js

 module.exports = function(sequelize, DataTypes) { var Candidate = sequelize.define('Candidate', { full_name: DataTypes.STRING, status: DataTypes.ENUM('REJECT', 'WAIT', 'HIRE') }); return Candidate; } 

并在创build一个候选人时,如何将一个role_id映射到DB中的候选人?

 app.post('/candidate/create', function (req, res) { var passport = require('passport'); passport.authenticate('basic'); var roleid = req.param('role-level-id'); var name = req.param('candidate-name'); console.log("role-id: " + roleid); console.log("name: " + name); // var candidate_obj = db.Candidate.build({ full_name: name}); candidate_obj.save().success( function(candidate) { console.log("obj created."); res.redirect('/candidates'); }).error(function (error) { console.log(error); res.redirect('/candidate/create'); }); }); 

主席先生,你的关联方法与记载的完全不同: http : //sequelizejs.com/docs/latest/associations

所以,如果你想与关联运行,我可以推荐你按照说明。

  1. 首先是分割模型定义和build立关联,因为要build立关联,你需要所有已经定义好的模型。 如果您试图在同一个文件中定义关联,那么在定义模型的地方 – 当关联模型之一尚未定义时,您可能会陷入错误。

  2. 如果你的模型定义是用db.Candidatevariables写的, db.Candidate在build立关联时应该使用这个variables名。 为了使相关的模型在美丽的自动创build的方法中被很好地检索(或保存),您需要在定义时使用参数。 dbCandidate.hasOne( db.Role, {as: 'Role'} )

  3. 任何模型关联都是双向的。 这意味着你不仅要定义db.Role.hasMany( db.Candidate, {as: 'Candidate'}而且还要db.Candidate.hasOne( db.Role, {as: 'Role'} )