用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
语句,但我无法获取创建的数据。
你是否认为在没有所有回调的情况下还有另一种方法可以进行此类操作?
答案 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
});