2016-06-22 6 views
1

標準化されたデータをUserAttribute列に追加するメソッドUser.createRider()を作成しようとしています。正規化レコードを追加するにはどうすればよいですか?

var sequelize = require('../database.js').sequelize, 
    Sequelize = require('../database.js').Sequelize, 


    UserAttribute = sequelize.define('userAttributes', { 
     key:  Sequelize.STRING, 
     value:  Sequelize.STRING, 
    }), 
    User; 

UserAttribute.belongsTo(User); 


User = sequelize.define('user', {},{ 
    classMethods: { 
     createRider: function(params) { 
      newUser = User.create(); 
      //this should be related to the user. 
      UserAttribute.create({key: 'somekey', value: 'somevalue'}); 

      return newUser; 
     } 
    } 
}); 



module.exports = User; 

私の問題は、ユーザーが実行される前に、私はにUSERATTRIBUTESを関連付けるユーザーモデルが必要と私は最初usermodelを作成することはできませんので、私は、UserAttributeモデルを作成することができないということであるI理由userAttributeが定義される前にクラスメソッドを作成できません。これは一般的なシナリオのようです。どのようにこれを解決することができます。

答えて

1

あなたは最初にユーザーを作成してから、後者を作成するときにuserAttributeにそのIDを追加するように聞こえます。ように:

User = sequelize.define('user', {}, { 
    classMethods: { 
     // Returns a new user instance as a promise. 
     createRider: function(params) { 
      return User.create().then(function(user) { 
       return UserAttribute.create({ 
        key: 'somekey', 
        value: 'somevalue', 
        userId: user.id 
       }).then(function() { 
        // Make sure this promise chain returns the user object, not the userAttribute object 
        return user; 
       }); 
      }); 
     } 
    } 
}); 
関連する問題