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();
);
}
}

如果没有收藏,我的项目将完美运行。