Sequelize.js 使用Sequelize抛出val.replace错误插入n:m表

Sequelize.js 使用Sequelize抛出val.replace错误插入n:m表,sequelize.js,Sequelize.js,我定义了这3个表 export default function(sequelize, DataTypes) { return sequelize.define('dict_Lang', { _id: { type: DataTypes.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, code:{ type :DataTy

我定义了这3个表

export default function(sequelize, DataTypes) {
  return sequelize.define('dict_Lang', {
    _id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      primaryKey: true,
      autoIncrement: true
    },
    code:{
      type :DataTypes.STRING(10),
      allowNull: false},
    name_en: {
      type: DataTypes.STRING(255),
      allowNull:false},
    pp_id: {
      type: DataTypes.INTEGER,
      allowNull: false},
    active: {
      type: DataTypes.INTEGER,
      allowNull:false,
      defaultValue: 0
    },
  },{
    tableName: 'Langs'
  });
}

export default function(sequelize, DataTypes) {
  return sequelize.define('HtmlValue', {
    _id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      primaryKey: true,
      autoIncrement: true
    },
    categorie_id: {
      type: DataTypes.INTEGER,
      allowNull: false
    },
    user_id: {
      type: DataTypes.INTEGER,
      allowNull: true
    },
    ok_oe: {
      type: DataTypes.BOOLEAN,
      allowNull: false,
      defaultValue: 0
    },
    ok_iam: {
      type: DataTypes.BOOLEAN,
      allowNull: false,
      defaultValue: 0
    },
    ok_export: {
      type: DataTypes.BOOLEAN,
      allowNull: false,
      defaultValue: 0
    }
  }
 );
}

export default function(sequelize, DataTypes) {

  return sequelize.define('HtmlLang', {
    titel: {
      type: DataTypes.STRING(300),
      allowNull : true
    },
    text: {
      type: DataTypes.STRING(4000),
      allowNull : true
    }
  }
 );
}
以及它们之间的联系

// Lang n:m Html
db.DictLang.belongsToMany(db.HtmlValue, { through: db.HtmlLang, foreignKey:'lang_id',otherKey:'html_id'});
db.HtmlValue.belongsToMany(db.DictLang, { through: db.HtmlLang, foreignKey: 'html_id',otherKey: 'lang_id'});
现在我想在创建一个新的
HtmlValue

// Creates a new HtmlValue in the DB
export function create(req, res) {
  console.log(req.body.defaultDE);
  return HtmlValue.create(req.body)
  .then((html)=>{
    console.log(HtmlValue.Instance.prototype);
    return html.addDict_Lang(req.body.defaultDE);
  })
    .then(respondWithResult(res, 201))
    .catch(handleError(res));
}
HtmlValue
创建得很好,然后抛出
val.replace错误…

但是

那么发送数据的格式是否正确,函数是否存在并关联?错误在哪里

Edit1: 根据请求,
req.body的输出

{ user_id: 2,
  categorie_id: '1',
  defaultDE: { titel: 'Test', text: 'Test2', lang_id: 73 },
  defaultEN: { titel: 'Test', text: 'Test3', lang_id: 75 } }
它创建
HtmlValue
时没有错误,它位于数据库中。 在我的表
Langs
中也存在
lang\u id:73
。 所以

我想在n:m表中插入。
html
保存
html\u id
并在
req.body.defaultDE
中发送必要的文本(string)、titel(string)、lang\u id(73您没有显示
req.body
addAssociation()的值)不接受普通对象afaik@felixfbecker我编辑了我的问题。我认为普通对象可以工作,因为我已经将它用于普通对象了?是我错了还是存在
val.replace Error
的错误,然后是其他地方?您没有显示
req.body
addAssociation()的值不接受普通对象afaik@felixfbecker我编辑了我的问题。我认为普通对象可以工作,因为我已经将它用于普通对象了?是我错了还是存在
val.replace Error
的错误?
{ user_id: 2,
  categorie_id: '1',
  defaultDE: { titel: 'Test', text: 'Test2', lang_id: 73 },
  defaultEN: { titel: 'Test', text: 'Test3', lang_id: 75 } }
html.addDict_Lang(req.body.defaultDE);
// Tasks n:m Keys Association
db.DictKey.belongsToMany(db.Task, { through: db.TaskKey, foreignKey:'key_id',otherKey:'task_id'});
db.Task.belongsToMany(db.DictKey, { through: db.TaskKey, foreignKey: 'task_id',otherKey: 'key_id'});
  .then((task) => {
      var groups = [];
      var size = 1000;
      for (var i = 0; i < req.body.keys.length; i += size) {
        groups.push(req.body.keys.slice(i, i + size));
      }
      _.forEach(groups, (value) => {
        return task.addDict_Keys(value);
      })
      return Task.findAll();
    })
{ titel: 'Hello', text: 'Buenos Nachos', lang_id: 73, user_id : 2 }