如何使用sequalize添加规范化记录?

时间:2016-06-22 17:48:36

标签: node.js sequelize.js

我正在尝试创建一个方法User.createRider(),将规范化数据添加到UserAttribute列。

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;

我的问题是我无法在用户完成之前创建UserAttribute模型,因为我需要User-model来关联userAttributes而我无法首先创建usermodel,因为我无法创建定义userAttribute之前的类方法。这似乎是一种常见的情况。怎么能解决这个问题。

1 个答案:

答案 0 :(得分:1)

听起来像你可以先创建用户,然后在创建后者时将其id添加到userAttribute。像这样:

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;
                });
            });
        }
    }
});