我有一个名为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
)< / p>
答案 0 :(得分:2)
不,bookshelf.js使用knex.js,它基于关系数据库。因此,您必须首先插入公司。在回调函数中,您可以获得插入的ID,也可以插入帖子。
您当然可以使用此事务,这在最近的knex.js更新中得到了很大改进。
我还没有对此进行测试,但我认为这样的事情应该或多或少有效:
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
});
});