如何在bookshelf.js中同时插入父表和子表

我得到了一个名为companies的表,另一个名为companies_posts ,其中company_posts.company_idcompanies.id的外键

假设我有以下的json

  { "name" : "Teste", "username" : "teste1", "password" : "teste1", "email" : "teste2@teste", "photo" : "teste", "description" : "teste", "company_posts" : [ {"text" : "oi"}, {"text" : "olá"} ] } 

bookshelf.js有没有办法一次插入它? 就像mongodb,我想。 或者我需要insert company ,得到lastInsertId ,然后insert每个company_posts后?

谢谢。

编辑:(顺便说一句,我刚刚学会了如何select使用withRelatedhasMany 。现在我必须学习如何insert / update

不,bookshelf.js使用基于关系数据库的knex.js。 因此,您必须先插入公司。 在callback函数中,您可以获取插入的ID,也可以插入post。

你当然可以使用这个交易,这在knex.js的最新更新中有了很大的改进。

我没有testing过这个,但是我认为这样的东西应该可以起作用,或多或less:

 var Company = bookshelf.Model.extend({ tableName: 'companies', posts: function(){ return this.hasMany(Post); } }); var Post = bookshelf.Model.extend({ tableName: 'posts', companies: function(){ return this.belongsTo(Company); } }); new Company().save({...}).then(function(company){ new Post().save({ ... company_id: company.get('id') }).then(function(post){ //final result }); });