Sequelize.js创建了太多的回调

时间:2014-08-27 11:02:26

标签: javascript node.js express callback sequelize.js

用nodejs,expressjs和sequelizejs开发一个安静的应用程序,我发现我的代码做了很多回调。

特别是当我在db中处理关联和创建对象时,如下所示:

// db is my database object

// here are my db entities : header, line and thing
// header has many   line 
// line   belongs to header
// line   has one    thing
// thing  has many   line

db.line.create().success(function(line){
  db.header.find({where:{id : header_id}}).success(function(header){
    header.addLine(line).success(function(){
      db.thing.find({where:{id : thing_id}}).success(function(thing){
        line.setThing(thing).success(function(){
          // OK
        });
      });
    });
  });
});

我想在错误回调中使用return语句,但我无法获取创建的数据。

你是否认为在没有所有回调的情况下还有另一种方法可以进行此类操作?

1 个答案:

答案 0 :(得分:1)

在前面的例子中,这是我在创建和关联的例子中看起来像的承诺:

// db is my database object

// here are my db entities : header, line and thing
// header has many   line 
// line   belongs to header
// line   has one    thing
// thing  has many   line

db.line.create().success(function(line){
  db.header.find({where:{id : header_id}
  }).then(function(header){
    header.addLine(line);
  }).then(function(){
    return db.thing.find({where:{id : thing_id}
  }).then(function(thing){
    line.setThing(thing);
  }).then(function(){
    // OK 
  }).catch(function(err){
    // handle errors of association
  });
.error(function(err){
   // handle errors of creation
});