如何在bookshelf.js

时间:2015-05-20 13:26:39

标签: mysql node.js 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

感谢。

编辑:(顺便说一句,我刚学会了使用selectwithRelated hasMany的方式。现在我必须学习如何insert / update)< / p>

1 个答案:

答案 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
    });
});