我有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
}
}
);
}
他们是Associated
// 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'});
现在我想在创建新的HtmlLang
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 Error...
但
console.log(req.body.defaultDE); shows me { titel: 'test', text:'test2': lang_id : 73}
and
console.log(HtmlValue.Instance.prototype); shows me
{....
getDict_Langs: [Function],
countDict_Langs: [Function],
hasDict_Langs: [Function],
hasDict_Lang: [Function],
setDict_Langs: [Function],
addDict_Lang: [Function],
addDict_Langs: [Function],
removeDict_Lang: [Function],
removeDict_Langs: [Function],
createDict_Lang: [Function] }
因此发送数据格式正确且功能存在并且是关联的?哪里可能是错误/错误?
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_id : 73
。
所以
html.addDict_Lang(req.body.defaultDE);
我想在n:m表中插入。
html
保存html_id
并在req.body.defaultDE
中发送必要的文本(字符串),标题(字符串),lang_id(73< - 存在于Lang表中)。
Edit2 对于评论..not Plain Objects
我有点使用其他地方相同的结构。
简而言之
// 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'});
使用addAssiciation
与普通对象
.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();
})
而Value将是一个简单的对象,如
{ titel: 'Hello', text: 'Buenos Nachos', lang_id: 73, user_id : 2 }
那么普通物体是有效还是我理解它错了?