cod*_*ich 13 orm promise q sails.js waterline
在过去的3天里,我一直在我的头上撞墙.
我正在使用sailsjs和捆绑的水线ORM.我想一个接一个地运行数据库调用.我知道我可以通过嵌套"then"调用来做到这一点,但它只是看起来不对.
我已经多次查看了Q文档和教程,但我仍然没有得到如何连接并从现有的Promises中依次点击"then"调用:(
我想要:
我的代码看起来像
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);
Run Code Online (Sandbox Code Playgroud)
正如你从代码中看到的那样,我一直在使用exec然后混合:P
我认为方法是连接Users.create(...).然后 - > Action.create(...).然后 - > Users.findOneByEmail(...).然后 - >*和更新.
非常感谢任何帮助
cod*_*ich 13
所以经过一天的研究.我想我已经破解了它.
注意:我工作的第一个版本通过返回创建了"then"的排列(删除了厄运的金字塔).这允许我在下一行调用然后激活创建.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);
Run Code Online (Sandbox Code Playgroud)
其中一个很酷的事情是"传播",可以让你行了"承诺"和"价值观"是一个回报他们都已经完成了进入下一个"然后".
| 归档时间: |
|
| 查看次数: |
3753 次 |
| 最近记录: |