如何在bookshelf.js中同时插入父表和子表
我得到了一个名为companies
的表,另一个名为companies_posts
,其中company_posts.company_id
是companies.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
使用withRelated
和hasMany
。现在我必须学习如何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 }); });