Nodejs Sequelize 没有插入

Nodejs Sequelize is not inserting

好吧,我已经盯着这个看了 2 个小时了,我就是找不到错误:

我有以下数据库table:

如果您看不出它有 4 列:

使用 sequelize 我正在使用以下代码:

var Competence = sequelize.define('competence', {
            id: DataTypes.INTEGER,
            name: DataTypes.STRING,
            organization_id: DataTypes.INTEGER,
            competence_type_id: DataTypes.INTEGER

        }, {
            freezeTableName: true,
            instanceMethods: {
                retrieveAll: function (org_id,onSuccess, onError) {
                    Location.findAll({where: {organization_id: org_id}}, {})
                        .ok(onSuccess).error(onError);
                },
                retrieveById: function (quote_id, onSuccess, onError) {
                    Location.find({where: {id: quote_id}}, {raw: true})
                        .success(onSuccess).error(onError);
                },
                add: function (onSuccess, onError) {
                    var competence = this.dataValues;
                    Competence.build(competence)
                        .save().ok(onSuccess).error(onError);
                },
                updateById: function (quote_id, onSuccess, onError) {
                    var id = quote_id;
                    var quotes = this.quotes;

                    Location.update({quotes: quotes}, {where: {id: id}})
                        .success(onSuccess).error(onError);
                },
                removeById: function (quote_id, onSuccess, onError) {
                    Location.destroy({where: {id: quote_id}}).success(onSuccess).error(onError);
                }
            }
        }
    ),
    competence_type = sequelize.define('competence_type', {
        id: DataTypes.INTEGER,
        name: DataTypes.STRING
    });
Competence.belongsTo(competence_type,{foreignKey: 'competence_type_id'});

注意我用来添加新元素的添加函数。

这是我的 competence 变量:

然而一旦我保存 none 我的回调函数被调用而不是 onSuccess 也不是 onError

谁能帮帮我,我快疯了!!

Sequelize 使用 bluebird for promises. So you should use .then and .catch methods, not .success(.ok) and .error. .error has another meaning in bluebird (see here)。所以例如 .add 方法可以这样写:

add: function (onSuccess, onError) {
    var competence = this.dataValues;

    Competence.build(competence).save().then(onSuccess).catch(onError);
}