mysql – 如何在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一样.或者我需要插入公司,获取lastInsertId然后立即插入每个company_posts?
谢谢.
编辑:(顺便说一句,我刚刚学会了如何选择使用withRelated和hasMany.现在我必须学习如何插入/更新)
解决方法:
不,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
});
});
标签:mysql,node-js,bookshelf-js 来源: https://codeday.me/bug/20190702/1360008.html