Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 续集创建包括_Javascript_Mysql_Node.js_Sequelize.js - Fatal编程技术网

Javascript 续集创建包括

Javascript 续集创建包括,javascript,mysql,node.js,sequelize.js,Javascript,Mysql,Node.js,Sequelize.js,我有以下模型和协会: var AcademyModule = sequelize.define('academy_module', { academy_id: { type: DataTypes.INTEGER, primaryKey: true }, module_id: { type: DataTypes.INTEGER,

我有以下模型和协会:

    var AcademyModule = sequelize.define('academy_module', {
        academy_id:
        {
            type: DataTypes.INTEGER,
            primaryKey: true
        },
        module_id:
        {
            type: DataTypes.INTEGER,
            primaryKey: true
        },
        module_module_type_id: DataTypes.INTEGER,
        sort_number: DataTypes.INTEGER,
        requirements_id: DataTypes.INTEGER
    }, {
        freezeTableName: true,
        instanceMethods: {
            retrieveAll: function (academy_id,onSuccess, onError) {
                AcademyModule.find({include: [{all: true}],where: {academy_id: academy_id}}, {})
                    .success(onSuccess).error(onError);
            },
            retrieveById: function (academy_id, onSuccess, onError) {
                AcademyModule.findAll({include: [{all: true}],where: {academy_id: academy_id}}, {})
                    .success(onSuccess).error(onError);
            },
            add: function (requirements,academyModule,onSuccess, onError) {
                var academyModule = academyModule;
                if(requirements == null)
                {
                    AcademyModule.build(this.dataValues)
                        .save().ok(onSuccess).error(onError);
                }
                else
                {
                    var am = {academy_id: academyModule.academy_id, module_id: academyModule.module_id, sort_number: academyModule.sort_number}
                    AcademyModule.build(am);
                    requirements.academy_module = am;

                    Requirements.create(requirements, {
                        include: [AcademyModule]
                    });
                }
            },
            updateById: function (quote_id, onSuccess, onError) {
                var id = quote_id;
                var quotes = this.quotes;

                AcademyModule.update({quotes: quotes}, {where: {id: id}})
                    .success(onSuccess).error(onError);
            },
            removeById: function (module_id,academy_id, onSuccess, onError) {
                AcademyModule.destroy({where: {academy_id: academy_id, module_id: module_id}}).success(onSuccess).error(onError);
            }
        }
    }
),
 Module = sequelize.define('module', {
    id: DataTypes.INTEGER,
    name: DataTypes.STRING,
    description: DataTypes.STRING,
    category_id: DataTypes.STRING,
    module_type_id: DataTypes.STRING,
    gives_score: DataTypes.INTEGER,
    duration: DataTypes.STRING,
    price: DataTypes.STRING

},{freezeTableName:true}),
    Academy = sequelize.define('academy', {
        id: DataTypes.INTEGER,
        name: DataTypes.STRING,
        created: DataTypes.DATE,
        description: DataTypes.STRING,
        rating: DataTypes.STRING,
        status_id: DataTypes.INTEGER,
        organization_id: DataTypes.INTEGER,
        division_id: DataTypes.INTEGER,
        icon: DataTypes.STRING

    }, {
        freezeTableName: true}),
    Requirements = sequelize.define('requirements', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
    value: DataTypes.STRING,
    requirement_type_id: DataTypes.INTEGER
}, {
    freezeTableName: true}),
    ModuleType = sequelize.define('module_type', {
        id: DataTypes.INTEGER,
        name: DataTypes.STRING,
        color: DataTypes.STRING,
        icon: DataTypes.STRING,
        type_description: DataTypes.STRING

    },{freezeTableName:true});

AcademyModule.belongsTo(Module, {foreignKey: 'module_id'});
AcademyModule.belongsTo(Academy, {foreignKey: 'academy_id'});
AcademyModule.belongsTo(Requirements, {foreignKey: 'requirements_id'});
AcademyModule.belongsTo(ModuleType, {foreignKey:'module_module_type_id'});
Requirements.hasOne(AcademyModule, {foreignKey: 'requirements_id'});
现在您可以看到,我在
AcademyModule
需求之间有一种关系

问题是必须在
academyModule
之前创建
requirements
行,因为必须填写
academyModule
requirements\u id

为了解决这个问题,我创建了以下add方法:

    var academyModule = academyModule;
if(requirements == null)
{
    AcademyModule.build(this.dataValues)
        .save().ok(onSuccess).error(onError);
}
else
{
    var am = {academy_id: academyModule.academy_id, module_id: academyModule.module_id, sort_number: academyModule.sort_number}
    AcademyModule.build(am);
    requirements.academy_module = am;

    Requirements.create(requirements, {
        include: [AcademyModule]
    });
}
但是在这里,它只在
需求
表中插入一行,而不在
学院模块
表中插入一行

所以我的问题是什么可能出了问题?如何确保它在两个表中都插入