小编Mat*_*ney的帖子

如何修复bookshelfjs事务中的嵌套结构

我想在一个bookhelf事务中更新许多数据库表.我可以使用一些帮助重构我的代码.我是节点的新手,对Promises没有很好的理解,但下面的嵌套结构不是很漂亮,我希望有一个更清洁的方法.任何帮助,将不胜感激.

function insertUser(user, cb) {
  bookshelf.transaction(function(t) {
  var key = user.key;
  Developer.forge({key: key})
  .fetch({require: true, transacting: t})
  .then(function(developerModel) {
    var devID = developerModel.get('id');
    Address.forge(user.address)
    .save(null, {transacting: t})
    .then(function(addressModel) {
      var addressID = addressModel.get('addressId');
      Financial.forge(user.financial)
      .save(null, {transacting: t})
      .then(function(financialModel) {
        var financialID = financialModel.get('financialId');
        var userEntity = user.personal;
        userEntity.addressId = addressID;
        userEntity.developerId = devID;
        userEntity.financialId = financialId;
        User.forge(userEntity)
        .save(null, {transacting: t})
        .then(function(userModel) {
          logger.info('saved user: ', userModel);
          logger.info('commiting transaction');
          t.commit(userModel);
        })
        .catch(function(err) {
          logger.error('Error saving user: ', err);
          t.rollback(err);
        });
      }) …
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise bookshelf.js

5
推荐指数
1
解决办法
2461
查看次数

标签 统计

bookshelf.js ×1

javascript ×1

node.js ×1

promise ×1