在过去的3天里,我一直在我的头上撞墙。
我正在使用sailsjs&捆绑的水线ORM。我想一个接一个地运行数据库调用。我知道我可以通过嵌套在"然后"电话,但它看起来不对。
我已经多次查看了Q文档和教程,但我仍然没有知道如何连接和解雇#34;然后"从现有的Promise顺序调用:(
我想:
我的代码看起来像
var mail = 'test@test.com';
Users.create({email:mail, name:''}).then(console.log).fail(console.log);
Actions.create({actionID:123})
.then(function(error, action){
Users.findOneByEmail(mail).then(function(person){
person.actions.add(action.id);
person.save(console.log);
}).fail(console.log)
});
Users.update({email:mail},{name:'Brian'}).exec(console.log);
Actions.update({actionID:123},{now:'running'}).exec(console.log);
从代码中可以看出,我一直在使用exec& amp;那么:P
我认为方法是连接 Users.create(...)。然后 - > Action.create(...)。then - > Users.findOneByEmail(...)。然后 - > *和更新。
非常感谢来自任何帮助
答案 0 :(得分:13)
经过一天的研究后。我想我已经破解了它。
注意:我工作的第一个版本有"然后" s排队(删除厄运金字塔)返回创建。这允许我在下一行调用然后激活创建。 http://documentup.com/kriskowal/q/#tutorial/chaining
这是我的最终版本
var mail = 'test@test.com';
Users.Create({email:mail,name:''})
.then(function(user){
return [Actions.create({actionID:123}),user];
}).spread(function(action, user){
user.action.add(action.id);
user.name = 'Brian';
user.save();
action.now = 'running';
action.save();
}).catch(console.error);
其中一个很酷的事情就是"传播"这可以让你排队"承诺"和"价值观"返回一个他们都完成了下一个"然后"。