Sails.js Sails,如何插入子表集合的记录?
我有一个包含Sails.js Sails,如何插入子表集合的记录?,sails.js,Sails.js,我有一个包含userRole集合列表的模型使用,我想从angularjs发送数据并插入数据库 //MODEL: User.js module.exports = { autoPK: false, attributes: { id : {type: 'integer', primaryKey: true, columnName: 'id'}, firstName : {type:'string', required:true}, last
userRole
集合列表的模型使用,我想从angularjs发送数据并插入数据库
//MODEL: User.js
module.exports =
{
autoPK: false,
attributes:
{
id : {type: 'integer', primaryKey: true, columnName: 'id'},
firstName : {type:'string', required:true},
lastName : {type:'string', required:true},
phone : {type:'string', required:true, unique: true},
roles : {collection:'UserRole', via:'user'}
}
}
//MODEL: UserRole.js
module.exports =
{
autoPK: false,
attributes:
{
user: {model: 'user'},
code: {type: 'string', required:true},
//a composite index
indexes:[{
attributes: ['user', 'code'],
unique: true
}]
}
};
当我按照下面的例子发布angular的数据时,我得到了升力和误差
{
"data":{
"firstName":"Administrator",
"lastName":"AD",
"phone":"7924499995",
"roles":[
{"code":"admin"},
{"code":"manager"},
{"code":"officer"}
]
}
}
错误是:
Unable to parse HTTP body- error occurred :: 'SyntaxError: Unexpected string\n at Object.parse (native)\n at parse (C:\\Users\\Chanatipy\\AppData\\Roaming\\npm\\node_
modules\\sails\\node_modules\\body-parser\\lib\\types\\json.js:66:17)\n at C:\\Users\\Chanatipy\\AppData\\Roaming\\npm\\node_modules\\sails\\node_modules\\body-parser\\lib\\rea
d.js:91:18\n at IncomingMessage.onEnd (C:\\Users\\Chanatipy\\AppData\\Roaming\\npm\\node_modules\\sails\\node_modules\\raw-body\\index.js:136:7)\n at IncomingMessage.g (even
ts.js:260:16)\n at emitNone (events.js:67:13)\n at IncomingMessage.emit (events.js:166:7)\n at endReadableNT (_stream_readable.js:905:12)\n at doNTCallback2 (node.js:4
52:9)\n at process._tickDomainCallback (node.js:407:17)'
如何解决此问题?看起来SAIL ORM不支持保存关系对象,所以我将在创建/更新父对象后尝试保存关系对象 我将把编码放在父模型的“后创建”功能中
//模型:User.js
模块.出口=
{
错,
属性:
{
id:{type:'integer',primaryKey:true,columnName:'id'},
名字:{type:'string',必需:true},
lastName:{type:'string',必需:true},
电话:{类型:'string',必需:true,唯一:true},
角色:{集合:'UserRole',via:'user'}
},
afterCreate:函数(属性,下一步){
//TODO插入/更新子集合he
}
}
您可以使用beforeValidate
钩子和findOrCreate
方法。这样,您将动态创建缺少的角色
//模型:User.js
模块.出口=
{
错,
属性:
{
id:{type:'integer',primaryKey:true,columnName:'id'},
名字:{type:'string',必需:true},
lastName:{type:'string',必需:true},
电话:{类型:'string',必需:true,唯一:true},
角色:{集合:'UserRole',via:'user'}
}
beforeValidate:(用户,cb)=>{
UserRole.findoUpdate(
//{code:['admin'、'manager'、'officer']}在您的情况下
{code:u.pluck(user.roles,'code')},
用户角色,
(错误,角色)=>{
user.roles=角色;
cb();
);
}
}
如果没有收藏,我的项目将完美运行。