Sequelize.js 使用Sequelize抛出val.replace错误插入n:m表
我定义了这3个表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
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 }